-->

ksoap2 xmlPullParserException未终止的实体裁判(ksoap2 xmlPu

2019-06-25 02:34发布

我有一个用户给我发电子邮件昨天,他和我的应用程序的问题,所以我开始调试,他并把他送我的电话的记录,他是得到一个XmlPullParserError他向服务器呼叫时

E/Message Exchange::CallWebService(6426): Exception: org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT �������`I�...@1:18 in java.io.InputStreamReader@406c8808) 05-31 12:33:25.573 
W/System.err(6426): org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT �������`I�...@1:18 in java.io.InputStreamReader@406c8808) 05-31-12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.error(KXmlParser.java:269)05-31-12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.pushEntity(KXmlParser.java:781)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.pushText(KXmlParser.java:849)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.nextImpl(KXmlParser.java:354)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.next(KXmlParser.java:1378)05-31 12:33:25.573 
W/System.err(6426):     at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:1408)05-31 12:33:25.573 
W/System.err(6426):     at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)05-31 12:33:25.573 
W/System.err(6426):     at org.ksoap2.transport.Transport.parseResponse(Transport.java:100)05-31 12:33:25.573 
W/System.err(6426):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:195)05-31 12:33:25.573 
W/System.err(6426):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)05-31 12:33:25.573 
W/System.err(6426):     at ecm2.android.MessageExchange$1.run(MessageExchange.java:96)05-31 12:33:25.573 
W/System.err(6426):     at java.lang.Thread.run(Thread.java:1019)05-31 12:33:27.928 

这是它始终未能在该行

trans.call(SOAP_ACTION, soapEnvelope);

这使得调用服务器,它只是抛出一个错误。 我有same exact phone这个人有我有他运行exact version I am running ,我没有问题,调用服务器,但他仍然有一个问题。

我有他卸载并重新安装了几次,所以我不知道什么会导致此他的手机上,而不是我的吗?

这是我如何创建XML

private static String CreateCallXML(String sDeviceID, String sEMailAddress, String sVersion) {
    Logging logger = new Logging();
    XmlSerializer serializer = Xml.newSerializer();
    StringWriter writer = new StringWriter();
    try {
        serializer.setOutput(writer);
        serializer.startDocument("UTF-8", true);
        serializer.startTag("", "PostData");
        serializer.startTag("", "RetrieveMsg");
        serializer.attribute("", "ver", sVersion);
        serializer.attribute("", "DevID", sDeviceID);
        serializer.attribute("", "eMailAddress", sEMailAddress);
        logger.append("D", className, "CreateCallXML", "LastIncMsgID:" + Settings.LastIncMsgID);
        logger.append("D", className, "CreateCallXML", "LastDLMsgID: " + Settings.LastDLMsgID);
        serializer.attribute("", "LastIncMsgID", "" + Settings.LastIncMsgID);
        serializer.attribute("", "LastDLMsgID", "" + Settings.LastDLMsgID);
        serializer.endTag("", "RetrieveMsg");
        serializer.endTag("", "PostData");
        serializer.endDocument();
        return writer.toString();
    } catch (Exception e) {
        return null;
    }
}

更新2:

通过代码后会出现该用户的电子邮件地址是问题的用户的电子邮件地址的例子是abcd3961@gmail.com如果我用它抛出异常,当它击中线路拨打电话到服务器。 如果我的电子邮件地址更改一个字母就执行调用的罚款。

这是一个KSOAP问题? 我怎么能解决这个让我不能告诉他改变他的电子邮件地址?

Answer 1:

未结束的实体出现此错误时

1 ...响应串错误可能是某些实体没有关闭。

<root>
    <a> first </a>
    <b>second             <----- </b> missing here
</roor>

2 ...你得到xml文件中的一些XML字符

 like      & { } � ...

您需要更换所有&安培; 看到这个答案

...
String str = writer.toString();
str = str.replaceAll("&","&amp;");
str = str.replaceAll("?","&#63;");
return str;


Answer 2:

我是有一个Android 2.2设备上的同样的问题,并发现ksoap2 2.6.5不与Android 2.2兼容。 嗯,我想这就是问题所在,我只知道它抛出这些错误。 我降级我ksoap2到2.4,并开始工作了。



Answer 3:

我有同样的问题。 该解决方案是,当我把从XML响应我不得不更换“和”与&中的用户名,对于一些用户出现了问题,但其他人没有。

因此,在“陆委会”的答案第2步



文章来源: ksoap2 xmlPullParserException unterminated entity ref