【问题标题】:Connecting to Web Service with KSOAP2 - getting XmlPullParserException使用 KSOAP2 连接到 Web 服务 - 获取 XmlPullParserException
【发布时间】:2011-07-19 12:32:22
【问题描述】:

我看到其他一些用户遇到同样的问题,但老实说,这些答案对我没有帮助。

我有一个连接到 PHP Web 服务(使用 NuSOAP)的 android 客户端,并且在本地一切正常。当我部署我的 web 服务并更新客户端上的变量时,我收到以下错误:

org.xmlpull.v1.xmlpullparserexception:意外类型(位置: END_DOCUMENT null@1:0 in java.io.InputStreamReader@44f11f30)

这是随机发生的 - 例如,对于登录,如果第一次尝试是“密码错误”(成功连接到 Web 服务),第二次尝试我会收到该错误。如果它被接受,我会强制关闭应用程序(我开始另一个活动)我想是因为这个问题。

我不知道问题出在哪里,因为我没有手动处理任何 XML 文件,而且我的 WDSL 很好,如您所见 here

我的连接字符串如下:

private static final String URL = "http://apkitchen.voku-online.de:8080/webs.php";
private static final String NAMESPACE = "urn:hellowsdl";
final String SOAP_ACTION = "urn:hellowsdl#auth";
final String METHOD_NAME = "auth";
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

我的完整连接功能是:

public Object soap(String METHOD_NAME, String SOAP_ACTION, String NAMESPACE, String URL)
            throws IOException, XmlPullParserException {

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        request.addProperty("username", "Maxxd"); 
        request.addProperty("password", "xxxx");
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(URL);
        httpTransport.call(SOAP_ACTION, envelope);
        Object result = envelope.getResponse();
        return result;
    }

我真的不知道为什么会发生这种情况....有什么帮助吗?

找到了问题(但不是解决方案...)

我转储了响应 xml 文件,看起来它是 mall 形成的:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:authResponse xmlns:ns1="urn:hellowsdl">
<return xsi:type="xsd:string">0</return>
</ns1:authResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<!..................

信封本身没问题,但没有结束评论标签...我该如何解决这个问题?

【问题讨论】:

  • 您正在使用 SoapSerializationEnvelope?什么版本?
  • 版本 11。尝试了 V10 和 V12 两个。

标签: java php


【解决方案1】:

看起来这是关于 API 级别

解决了

System.setProperty("http.keepAlive", "false");

我希望这希望有人,因为我看到几十个人有同样的问题。

【讨论】:

  • 这句话放在哪里?在 HTTPTransportSE 语句之后?
【解决方案2】:

我不确定它是否会帮助你,但我也有同样的例外。 当我将信封版本从 11 更改为 10 时,它神奇地消失了:o。 也许您可能想尝试一下。

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多