Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SOAP RPC/Encoded convert to RPC/Literal

Tags:

soap

xml

rpc

Does anyone know of a tool or 'blackbox' that would convert a RPC/Encoded WSDL to RPC/Literal? I don't have the ability to change the API (it's not mine) but the tool I want to use does not support RPC/Encoded. I'd like to see if someone has created a simple black box communication converter.

I want to use wave maker and i'm not a programmer so I'm looking for a tool to just take care of the translation.

like image 845
mike ippolito Avatar asked Feb 11 '12 13:02

mike ippolito


People also ask

What is RPC encoded in WSDL?

"rpc/encoded" is the popular combination of message style and encoding option for most RPC (Remote Procedure Call) Web services. So let's write the second example with: WSDL Version: 1.1. WSDL Binding Extension: SOAP 1.2.

What is use literal in WSDL?

In binding, "literal" is only defined the encoding style used, the complex Type name is showed in the "wsdl:message" definition, which is used in "wsdl:operation" in "wsdl:portType". You should have something like this. `

What is RPC and document style in SOAP?

Document style: The SOAP Body contains one or more child elements called parts. There are no SOAP formatting rules for what the body contains; it contains whatever the sender and the receiver agrees upon. RPC style: RPC implies that SOAP body contains an element with the name of the method or operation being invoked.

What is document literal?

The document/literal encoding allows the transmission of any arbitrary valid XML document instead of a SOAP call following rules from section 5 from SOAP/1.1 specification. This allows us to send and receive SOAP packets that are more free-form ("document" style).


1 Answers

If you are changing the encoding of the WSDL, then the SOAP messages would change to:

RPC/Encoded Message Sample

<soap:envelope>
    <soap:body>
        <myMethod>
            <x xsi:type="xsd:int">5</x>
            <y xsi:type="xsd:float">5.0</y>
        </myMethod>
    </soap:body>
</soap:envelope>

RPC/Literal Message Sample

<soap:envelope>
    <soap:body>
        <myMethod>
            <x>5</x>
            <y>5.0</y>
        </myMethod>
    </soap:body>
</soap:envelope>

http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/

So, it is not enough to translate the WSDL, as you can see de differences between SOAP messages.

You could create a component that acts like a middle man:

  • call the target services in RPC/literal
  • export functionality as RPC/encoded to your application

But this component needs to be implemented on your specific case, there is no magic tool.

like image 143
Stelian Matei Avatar answered Oct 02 '22 08:10

Stelian Matei