Skip to Content

Webservice call returns NULL

Hello,

I'm using Powerbuilder 12.1 Classic Build 6639, Windows 7 64

In my application I do a call to a webservice - function 'rkdb'. (I use the .NET WS engine)

The rkdb function can do certain things depending on the request-parameters given.

All function calls work well, except one that returns NULL.

I used Fiddler and even set up a SoapUI-Project to test the function with the same parameters and I can see that a valid SOAP-Response is returned containing all values expected.

So the problem must be at the PB side.

The returned object consists of a couple of nested objects.
One of the objects is defined as follows:

<xs:element name="input">
<xs:complexType>
<xs:sequence>
<xs:any maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>

The object created in PB by the WS-proxy shows like this:

type variables
any ws_Any[]
end variables

I think that this could be the problem, because I found related infos in another thread:

"No any datatype as WS Result (by Chris Pollach)":
https://archive.sap.com/discussions/thread/3904173

There is stated, that powerbuilder WS-Clients can only deal with standard C-types.

Am I right, is this the cause for the problem and how to solve this?

I'm sure I cannot talk to the webservice vendor to change this.

Here's the link to the WSDL-File:

https://finanzonline.bmf.gv.at/fonws/ws/regKasseService.wsdl

Here's the code for calling the webservice:

soapconnection lsc_fon

rkdbservice ln_rkdbservice

rkdbrequest ln_request
rkdbresponse ln_response

belegpruefung ln_belegpruefung

ls_proxy = "rkdbservice"
ls_function = "rkdb"

lsc_fon = create soapconnection


ll_rc = lsc_fon.CreateInstance(ln_rkdbservice, ls_proxy)

try

ln_request = create rkdbrequest
ln_request.tid = as_tid
ln_request.benid = as_benid
ln_request.id = as_session_id
ln_request.erzwinge_asynchron = ab_erzwinge_asynchron
ln_request.erzwinge_asynchronspecified = true

ln_request.art_uebermittlung = 0

ln_belegpruefung = create belegpruefung
ln_belegpruefung.satznr = as_satznr
ln_belegpruefung.kundeninfo = left(as_kundeninfo, 50)
ln_belegpruefung.beleg = as_beleg

ln_request.ws_rkdb = create rkdb
ln_request.ws_rkdb.fastnr = gs_null

ln_request.ws_rkdb.ts_erstellung = f_today_now()
ln_request.ws_rkdb.paket_nr = "1"
ln_request.ws_rkdb.ws_belegpruefung = ln_belegpruefung
ln_response = ln_rkdbservice.rkdb(ln_request)

ln_response = ln_rkdbservice.rkdb(ln_request)

// ln_response is NULL ???

catch ...



Thank you for any help!

Martin

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

0 Answers