org.xmlpull.v1.XmlPullParserException:意外类型(位置:END_DOCUMENTnull@1:1在Android KSOAP2中,但在C中,它正在工作

org.xmlpull.v1.XmlPullParserException:意外类型(位置:END_DOCUMENTnull@1:1在Android KSOAP2中,但在C中,它正在工作,android,ksoap2,Android,Ksoap2,在访问WCF(.svc)Web服务时,我已经经历了两周的错误。但是在C#中,当我将Web服务添加为服务引用时,它可以工作 org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:1 in java.io.InputStreamReader@418188c0) Web服务的targetNamespace=”“urn:data.link.abc“,方法的详细信息如下 <w

在访问WCF(.svc)Web服务时,我已经经历了两周的错误。但是在C#中,当我将Web服务添加为服务引用时,它可以工作

org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:1 in     java.io.InputStreamReader@418188c0)
Web服务的
targetNamespace=”“urn:data.link.abc“
,方法的详细信息如下

<wsdl:operation name="EncryptPassword">
<wsdl:input wsaw:Action="EncryptPassword" name="EncryptPasswordRequest" message="tns:EncryptPasswordRequest"/>
<wsdl:output wsaw:Action="urn:data.link.abc/ABCContract/EncryptPasswordResponse"     name="EncryptPasswordReply" message="tns:EncryptPasswordReply"/>
</wsdl:operation>

这是我访问.svc web服务的代码

public final String web_serviceEncryptPassword(String password)
{
    String NAMESPACE = "urn:data.link.abc";
    String METHOD_NAME = "EncryptPassword";
    String SOAP_ACTION =  NAMESPACE + "/" + "EncryptPassword";
    String URL = "http://192.168.20.254:8081/Service.svc"; //"http://192.168.20.254:8081/Service.svc?wsdl";

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    Object result = null;
    try
    {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        //request.addProperty("_Password", password);
        PropertyInfo propertyInfo = new PropertyInfo();
        propertyInfo.setName("arg0");
        propertyInfo.setValue(password);
        propertyInfo.setType(String.class);
        request.addProperty(propertyInfo);


        envelope.setOutputSoapObject(request);
        envelope.bodyOut = request;

        //They said they have an authorization, but same error still showed up when I added the header for the                 
        //Authorization...
        //List<HeaderProperty> headers = new ArrayList<HeaderProperty>();
        //String authentication = android.util.Base64.encodeToString(
        //         "user.a:password".getBytes(), android.util.Base64.NO_WRAP);
        //headers.add(new HeaderProperty("Authorization", "Basic " + authentication));
        //// headers.add(new HeaderProperty("Authorization", "user.a:password"));

        androidHttpTransport.debug = true;
        androidHttpTransport.call(SOAP_ACTION, envelope);//, headers);
        SoapObject response = (SoapObject) envelope.getResponse();
        result = Boolean.parseBoolean(response.getProperty(0).toString());

    }
    catch (Exception E)
    {
        E.printStackTrace();
    }

    return result.toString();
}
公共最终字符串web\u服务加密密码(字符串密码)
{
String NAMESPACE=“urn:data.link.abc”;
字符串方法\u NAME=“EncryptPassword”;
字符串SOAP_ACTION=NAMESPACE+“/”+“EncryptPassword”;
字符串URL=”http://192.168.20.254:8081/Service.svc"; //"http://192.168.20.254:8081/Service.svc?wsdl";
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
对象结果=空;
尝试
{
SoapObject请求=新的SoapObject(名称空间、方法名称);
//request.addProperty(“密码”,Password);
PropertyInfo PropertyInfo=新的PropertyInfo();
propertyInfo.setName(“arg0”);
propertyInfo.setValue(密码);
propertyInfo.setType(String.class);
request.addProperty(propertyInfo);
envelope.setOutputSoapObject(请求);
envelope.bodyOut=请求;
//他们说他们有授权,但当我为
//授权。。。
//列表标题=新建ArrayList();
//字符串身份验证=android.util.Base64.encodeToString(
//“user.a:password”.getBytes(),android.util.Base64.NO_WRAP);
//添加(新的HeaderProperty(“授权”、“基本”+认证));
////添加(新的HeaderProperty(“授权”、“用户a:密码”);
androidHttpTransport.debug=true;
调用(SOAP_操作,信封);/,头);
SoapObject响应=(SoapObject)信封.getResponse();
result=Boolean.parseBoolean(response.getProperty(0.toString());
}
捕获(例外E)
{
E.printStackTrace();
}
返回result.toString();
}

我正在使用ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar作为我的ksoap2库。

我将相同的问题更改为(1.2版),问题得到了解决

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

这很可能意味着服务器响应http错误。ksoap无法解析http错误。 我们已将此功能手动添加到库中