cancel
Showing results for 
Search instead for 
Did you mean: 

Creating Web Service Proxy From WSDL - Error SPRX046

Former Member
0 Kudos

We are attempting to create some Web Service proxy objects from some WSDL files. Some of the WSDL files contain message definitions with multiple parts such as

<i><wsdl:message name="GetNewSubmissionsResponse">

<wsdl:part element="impl:Count" name="Count"/>

<wsdl:part element="impl:MoreAvailable" name="MoreAvailable"/>

<wsdl:part element="impl:IRSData" name="IRSData"/>

<wsdl:part element="impl:StateSubmissions" name="StateSubmissions"/>

</wsdl:message></i>

This always generates the error message <b>SPRX046 - "

Msg Proxy generation terminated: Message must have exactly one part".</b>

Is this just a limitation with SAP Web AS? Has anyone dealt with this before? These WSDLs work in other environments (AXIS Java, XML Spy etc).

Thanks

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi all -

I'm getting this same error, but because the message in the WSDL provided by our vendor has NO parts - not too many.

Can anyone provide any advice how to change the WSDL so that I can still get it to operate correctly with our vendor's web service, but have a part within the message? Clearly, I need it to be some kind of "void" value.

<wsdl:message name="addContactRequest">

<wsdl:part element="impl:add-contact-request" name="add-contact-request" />

</wsdl:message>

<wsdl:message name="addContactResponse" />

<wsdl:message name="removeRelationshipResponse" />

<wsdl:message name="removeAddressRequest">

<wsdl:part element="impl:remove-address-request" name="remove-address-request" />

</wsdl:message>

Thanks so much for your help!

Abby

athavanraja
Active Contributor
0 Kudos

Hi,

Did you solve this issue. i was trying to create a client proxy from ABAP (WAS6.4) for

http://api.google.com/GoogleSearch.wsdl and hit with the same error.

Regards

Raja

Former Member
0 Kudos

Hi,

What is your WAS server and NDS version?

I have tested this successfully on WAS SP9 and SP10 with NDS SP9 and SP10.

Regards,

Bhavik

athavanraja
Active Contributor
0 Kudos

this is "<b>client proxy from ABAP</b>" and not from NWDS.

Regards

Raja

kevinliu
Product and Topic Expert
Product and Topic Expert
0 Kudos

It seems ABAP proxy only supports Document-Literal style WSDL. Document-literal style is supported by most Web services platforms, and is supposed to be most interoperable.

Per WS-I Basic Profile 1.0 (see [1])which provides interoperability guidance of using WSDL1.1, when the message part is defined using the @element attribute, the message can only be bound to so-called "document-Literal" style which in turn requires that the message contains only one part.The WSDL you provided violated the document-literal rules.

Have you tried to change the message definition a bit so it's BP conformant? Try defining a complex type for the subelements, then define an wrapper element to use that complex type, and finally let the message part to refer to the wrapper element. Something like,

<wsdl:message name="GetNewSubmissionsResponse">

<wsdl:part element="impl:GetNewSubmissionsResponseWrapper" name="myResponse"/>

</wsdl:message>

athavanraja
Active Contributor
0 Kudos

Thank you very much for the detailed explanation.

are you saying that i can save the WSDL (http://api.google.com/GoogleSearch.wsdl) locally and modify the message definition and use it to build the client proxy and it would still work.

Regards

Raja

kevinliu
Product and Topic Expert
Product and Topic Expert
0 Kudos

Sorry for the late reply.

Most of the operatoins in your WSDL are RPC style. I am not sure ABAP stack supports RPC styles at all.

If you redefine the messages and bindings using Document/literal so that the WSDL ends up with the same wired messages, it should work fine (Disclaimer: this is just my guess, I have never tested it myself)

If Google has paid more attention to WS-I and W3C and used document/literal style more often, your life is much easier. sigh.

Regards,

Kevin

athavanraja
Active Contributor
0 Kudos

Hi Kevin,

Thanks for the reply. i was on a short holiday , thus the dealy in replying. sorry about the late reply.

I will try it and let you know.

Regards

Raja

former_member187709
Active Participant
0 Kudos

Hi,

The ABAP stack as far as my knowledge of web services and WSDL in ABAP stack goes, does support it.

Can import the WSDL after making the changes locally to create the class and then can be used in the same way as it would have done via HTTP or through the URL WSDL class creation in ABAP stack.