1. Steve Mason
  2. PowerServer Mobile (Obsolete)
  3. Friday, 13 October 2017 20:34 PM UTC

I am using Powerbuilder 2017 Universal version.

Powerbuilder, Powerserver, the test web service and the mobile app (which calls the test web service) are all installed on the same system.

When the mobile app specifies a url of http://localhost/testwebservice/n_testwebservice.asmx the mobile app can successfully call the web service.

When the mobile app specifies a url of http:///testwebservice/n_testwebservice.asmx the mobile app reports error "Execute call Web Service failed. Errormessage:App-Webservice:Invoke Web Service method failure! message=Exception has been thrown by the target of an invocation" when attempting to call the web service.

represents the actual url that can be used to access the web service from systems not on the local network.  When I browse url http:///testwebservice/n_testwebservice.asmx from an external system I can successfully view web service description page and see the same page as I do when I browse http://localhost/testwebservice/n_testwebservice.asmx from the local system.

Also, I can successfully call the web service from a Powerbuilder desktop program specifying url http:///testwebservice/n_testwebservice.asmx.

Any ideas why I cannot call the web service from the mobile app using the external url?

Steve Mason Accepted Answer Pending Moderation
  1. Monday, 16 October 2017 19:25 PM UTC
  2. PowerServer Mobile (Obsolete)
  3. # 1

Here is code:

Web service:

//li_rc = .of_add(ls_input1, ls_input2, ls_output)
integer li_output

if not isnumber(as_input1) then return -1
if not isnumber(as_input2) then return -2

li_output = integer(as_input1) + integer(as_input2)

as_output = string(li_output)

return 1

---------------------------------

Calling web service from mobile app:

appeonwebservicecomponent appeonws
string ls_url
any la_params[]
long ll_rc

appeonws=create appeonwebservicecomponent
appeonws.calltype="1"
ls_url="http://localhost/testwebservice/n_testwebservice.asmx"
appeonws.proxydllorurl=ls_url
appeonws.classdescript=""
la_params[1] = sle_1.text
la_params[2] = sle_2.text
la_params[3] = ''
ll_rc = appeonws.of_callwebservice("of_add",la_params)
if ll_rc <> 0 then
    messagebox('CallWebService', 'Url: ' + ls_url + '~r~nReturnValue: ' + string(appeonws.returnvalue) + '~r~nError: ' + appeonws.errortext)
else
    sle_3.text = la_params[3]
    messagebox('CallWebService', 'ReturnValue: ' + string(appeonws.returnvalue) + ' Error: ' + appeonws.errortext)
end if
destroy appeonws

 

 

Comment
  1. Marco Meoni
  2. Tuesday, 17 October 2017 14:19 PM UTC
Your code looks just fine, but I don't quite get what you mean by



"When the mobile app specifies a url of http://localhost/testwebservice/n_testwebservice.asmx the mobile app can successfully call the web service"



How do you test the mobile app on localhost? PB 2017 doesnt ship the AWS emulator.



What if you use a WS datawindow? Does it work?



You can switch endpoint at runtime using :





lws_connection = CREATE wsconnection

lws_connection.endpoint = "http://servername/testwebservice/n_testwebservice.asmx?WSDL"

If dw_1.SetwsObject(lws_connection) = 1 Then dw_1.retrieve()



Cheers,



Marco

  1. Helpful
There are no comments made yet.
Marco Meoni Accepted Answer Pending Moderation
  1. Friday, 13 October 2017 21:27 PM UTC
  2. PowerServer Mobile (Obsolete)
  3. # 2

Hi,

please show your code otherwise reasons for the error can be many.

Cheers,

Marco

Comment
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.
We use cookies which are necessary for the proper functioning of our websites. We also use cookies to analyze our traffic, improve your experience and provide social media features. If you continue to use this site, you consent to our use of cookies.