Consultor Eletrônico



Kbase P116456: Error 11506 accessing a document/literal web service in OpenEdge 10.1A
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/28/2008
Status: Verified

SYMPTOM(s):

Error 11506 accessing a document/literal web service

Web Service operation <operation> generated a SOAP fault. SOAP fault string is: System.Web.Services.Protocols.SoapException: Server wsa unable to process request. ---> System.ArgumentNullException: Value cannot be null. (11506)

WebService operation accepts a string as input

The input string is expected to be a well formatted XML fragment

FACT(s) (Environment):

OpenEdge 10.1A
All Supported Operating Systems

CAUSE:


Because Web Services Out supports two forms of wrapped document/literal, it must try to distinguish which form is being used. To do this, the OpenEdge runtime attempts to parse it the string value. If the string is, in fact, well formed XML, it assumes the operation is being called as in the 10.0 releases. However, when the SOAP message is put together, it is not correct.

FIX:


The following workaround applies to the Execute .NET operation detailed below:
ASP.NET: [WebMethod] public string Execute( string strXML );
4GL WSO:
strXML = '<ns0:Execute xmlns:ns0="http://tempuri.org/" 10-100'">http://tempuri.org/><ns0:strXML><order><OrderNum>10-100</OrderNum></order><
s0:strXML><
s0:Execute>'.
RUN Execute IN hServiceSoap( INPUT strXML, OUTPUT ExecRes ).
1. Run the analyzer with the given WSDL but use the -show100style argument on the command line.
2. Construct the XML string as shown in the WSDL documentation
3. However, surround the string-value you want to send with XML CDATA markup.
The string originally tried to send would look like:
<ns0:Execute xmlns:ns0=''">http://tempuri.org/>'<ns0:strXML><![CDATA[<order><OrderNum>10-100</OrderNum></order>]]><
s0:strXML><
s0:Execute>".