Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java KSoap Android:意外的子元素x,应为x_Java_Android_Wsdl_Axis2 - Fatal编程技术网

Java KSoap Android:意外的子元素x,应为x

Java KSoap Android:意外的子元素x,应为x,java,android,wsdl,axis2,Java,Android,Wsdl,Axis2,我正在使用,并且遇到以下问题:当我调用web服务时,我收到以下错误消息: SoapFault - faultcode: 'axis2ns5:Client.input.missingOrUnexpectedParameter' faultstring: 'Unexpected subelement site, site is expected( callId: 34527, Client.input.missingOrUnexpectedParameter/1.2.2)' faultactor

我正在使用,并且遇到以下问题:当我调用web服务时,我收到以下错误消息:

SoapFault - faultcode: 'axis2ns5:Client.input.missingOrUnexpectedParameter' 
faultstring: 
'Unexpected subelement site, site is expected(
callId: 34527, Client.input.missingOrUnexpectedParameter/1.2.2)'
faultactor: 'null' detail: org.kxml2.kdom.Node@7e5db5ae
这是我的请求代码:

SoapObject request = new SoapObject("http://example.com/namespace", "MyService");
request.addProperty("site", "example.org");
request.addProperty("user", "123");
request.addProperty("password", "456");

List<HeaderProperty> headerProperties = new LinkedList<HeaderProperty>();
headerProperties.add(new HeaderProperty("Authorization", "Basic " + org.kobjects.base64.Base64.encode("user:pass".getBytes())));
HttpsTransportSE con = new HttpsTransportSE("example.com", 443, "/myWebService/", 10000);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;

con.call("login", envelope, headerProperties);
System.out.println(envelope.bodyIn);
SoapObject请求=新的SoapObject(“http://example.com/namespace“,“我的服务”);
request.addProperty(“site”、“example.org”);
请求。添加属性(“用户”、“123”);
请求。添加属性(“密码”、“456”);
List headerProperties=new LinkedList();
添加(新的HeaderProperty(“授权”、“基本”+org.kobjects.base64.base64.encode(“用户:pass.getBytes())));
HttpsTransportSE con=新的HttpsTransportSE(“example.com”,443,“/myWebService/”,10000);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(请求);
envelope.dotNet=true;
con.call(“登录”、信封、headerProperties);
System.out.println(信封.bodyIn);
不要介意我在site参数和URI中输入的值

这是我的WSDL(至少是与登录相关的部分):


我没有编写WSDL,如果其中有一些错误,那只是因为我复制了WSDL(并删除了与此问题无关的部分)


那么,我为什么会出现上述错误呢?

为了消除错误,我需要按照答案的建议取消注释
envelope.dotNet=true
。另一个问题建议将其设置为true。

是否尝试显示SoapFault的“detail”元素中包含的内容?(即org.kxml2.kdom。Node@7e5db5ae)
<wsdl:definitions name="MyService" targetNamespace="http://example.com/namespace" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://example.com/namespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
    <wsdl:types>
        <xsd:schema targetNamespace="http://example.com/namespace">
            <xsd:element name="loginRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="site" type="xsd:string"/>
                        <xsd:element name="user" type="xsd:string"/>
                        <xsd:element name="password" type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="loginResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="successful" type="xsd:boolean"/>
                        <xsd:element minOccurs="0" name="sessionToken" type="xsd:string"/>
                        <xsd:element minOccurs="0" name="firstTimeUser" type="xsd:boolean"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:schema>
    </wsdl:types>

    <!-- Snip -->

    <wsdl:message name="loginRequest">
        <wsdl:part name="parameters" element="tns:loginRequest">
        </wsdl:part>
      </wsdl:message>
    <wsdl:message name="loginResponse">
        <wsdl:part name="parameters" element="tns:loginResponse">
        </wsdl:part>
    </wsdl:message>    

    <!-- Snip -->

    <wsdl:operation name="login">
        <wsdl:input message="tns:loginRequest">
        </wsdl:input>
        <wsdl:output message="tns:loginResponse">
        </wsdl:output>
    </wsdl:operation>
    <wsdl:binding name="MyServiceSOAP" type="tns:MyService">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="login">
            <soap:operation soapAction="http://example.com/namespace/login"/>
            <wsdl:input>
                <soap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>    
    </wsdl:binding>
</wsdl:definitions>