gpt4 book ai didi

android - ksoap2 xmlPullParserException 未终止实体引用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:41 29 4
gpt4 key购买 nike

昨天我有一个用户给我发邮件说我的应用程序有问题,所以我开始和他一起调试并让他把电话日志发给我,当他收到一个 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);

调用服务器,它只是抛出一个错误。我有这个人的完全相同的电话,我让他运行我正在运行的确切版本,我在调用服务器时没有问题,但他仍然有问题。

我让他卸载并重新安装了好几次,所以我不知道是什么原因导致他的手机出现这种情况而不是我的?

这就是我创建 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问题吗?我不能告诉他更改他的电子邮件地址,我该如何解决这个问题?

最佳答案

Unterminated entity 此错误发生在

1...响应字符串中的错误可能是某些实体未关闭。

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

2...你在 xml 文件中得到了一些 xml 字符

 like      & { } � ...

您需要将所有&替换为& see this answer

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

关于android - ksoap2 xmlPullParserException 未终止实体引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10851616/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com