"反序列化操作请求消息正文时出错"当我使用Ksoap2来调用WCF时会发生

时间:2015-11-13 08:35:04

标签: android wcf wsdl

我想使用KSoap2来调用WCF。但是发生了一些错误。 我不知道是否需要设置OperationContract的其他属性?

有人可以帮助我吗?

我非常感谢你

这是我的WCF OperationContract

[OperationContract (Name = "HelloWorld")]
string HelloWorld(string username);

这是我的WSDL

<wsdl:operation name="ComparePassWord">
<soap:operation soapAction="http://tempuri.org/IITRIService/ComparePassWord"   style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>

这是我的Java代码

SoapObject request = new SoapObject(NAMESPACE, "HelloWorld");
PropertyInfo HelloWorld = new PropertyInfo();
HelloWorld.setType(String.class);
HelloWorld.setName("username");
HelloWorld.setValue(username);
request.addProperty(HelloWorld);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
// Set output SOAP object
envelope.setOutputSoapObject(request);
// Create HTTP call object
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
  // Invoke web service
     androidHttpTransport.call(SOAP_ACTION_URL,envelope);
    }  catch (Exception e) {
            //Print error
            e.printStackTrace();
            //Assign error message to resTxt
            resTxt = "Error occured";
        }
        SoapObject response = null;

        try {
            // Get the response

            response = (SoapObject) envelope.bodyIn;
        }
         catch (Exception e) {
            //Print error
            e.printStackTrace();
            //Assign error message to resTxt

            return new String[]{"fail"};
        }

1 个答案:

答案 0 :(得分:0)

我通过将我的WCF更新到版本4.5来解决此问题。

WCF将仅显示WSDL本身的操作 - 数据结构记录在链接到WSDL文件的XSD文件中。

当我将WCF更新为版本时。我可以获得包括所有XSD元素的整个WSDL