Android上的ksoap2 XMLPullParserException:使用3g连接时出现意外令牌

时间:2013-04-29 14:38:26

标签: android soap wifi ksoap2 3g

我正在使用kso​​ap2版本2.5.4从基于cordova的Android应用程序向服务器发送soap请求。这在我们的测试设备上使用wifi连接时效果很好,但是每当使用3g连接时都会失败。

测试的设备是Nexus 7

我已经针对这个问题进行了广泛的搜索,但尚未找到解决方案。

当使用wifi连接时,响应看起来很棒,但每当我切换到使用3g时,我都会收到以下错误:

 org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT jsoapenv:Env...@1:248 in java.io.InputStreamReader@4164ce20) 
    at org.kxml2.io.KXmlParser.next(KXmlParser.java:426)
    at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
    at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:2029)
    at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)
    at org.ksoap2.transport.Transport.parseResponse(Transport.java:90)
    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:179)
    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:90)
    at se.icecon.poc.SOAPRequest.login(SOAPRequest.java:119)
    at se.icecon.poc.SOAPRequest.execute(SOAPRequest.java:37)
    at org.apache.cordova.api.Plugin$1.run(Plugin.java:78)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
    at java.lang.Thread.run(Thread.java:856)

这是我的请求代码。

private String login (String username, String password) {
    SoapObject request = new SoapObject(NAMESPACE, "LoginRequestMessage");
    request.addProperty("username", username);
    request.addProperty("password", password);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);

    HttpTransportSE ht = new HttpTransportSE(URL);
    ht.debug = true;
    try {
        ht.call(SOAP_ACTION, envelope);
        return ht.responseDump;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "";
}

似乎当使用3g时,一些字节被添加到响应中并稍微移位,因此以某种方式破坏了请求中的其余数据。

我目前的猜测是,它与this类似,但我只是留下一些遗留下来的字符,以某种方式弄乱其余部分。

提前感谢任何可能将其推向正确方向的提示。

0 个答案:

没有答案