2012-06-01 1 views
4

어제 그 사람이 내 응용 프로그램에 문제가있어서 어제 그 사람과 디버깅하기 시작한 것을 나에게 이메일로 보냈고 전화 기록을 보냈습니다. 그는 XmlPullParserError을 만들었습니다. 서버에 호출을하고 그냥 오류가 발생합니다ksoap2 xmlPullParserException unterminated entity ref

trans.call(SOAP_ACTION, soapEnvelope); 

에서 서버

E/Message Exchange::CallWebService(6426): Exception: org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT �������`I�[email protected]:18 in [email protected]) 05-31 12:33:25.573 
W/System.err(6426): org.xmlpull.v1.XmlPullParserException: unterminated entity ref (position:TEXT �������`I�[email protected]:18 in [email protected]) 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 

이 항상 실패 라인에 문의하십시오. 나는 same exact phone이 사람이 있고 그 사람 을 실행했다, 나는 서버를 호출하는 데 문제가 없었지만 그는 여전히 문제가있었습니다.

나는 그를 제거하고 몇 번 다시 설치해야했기 때문에 전화가 아닌 내 문제의 원인을 알 수 있습니까?

이 내가 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 :

코드를 통과 한 후에는 사용자의 이메일 주소가 사용자의 이메일 주소의 예는 문제가 나타납니다 [email protected] 내가 서버에 전화를 걸기 위해 라인에 도달하면 예외를 던집니다. 전자 메일 주소에서 한 글자를 변경하면 통화가 잘 처리됩니다.

이 문제는 ksoap입니까? 어떻게 내가 그의 이메일 주소를 바꾸라고 말할 수 없으므로이 문제를 해결할 수 있습니까?

1 ... 응답 문자열에 오류가 폐쇄되지 않는 일부 개체 수 있습니다 때

답변

14

이 종결되지 않았습니다 기업이 오류가 발생합니다.

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

이 ... 당신은

like  & { } � ... 

이 모든 && 앰프를 교체해야 XML 파일에 일부 XML 문자를 받고있다;see this answer

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

입니다.하지만 왜 내 전화기가 아닌 내 전화기에서만이 문제가 발생합니까? 우리 모두 같은 버전을 실행하는 동일한 전화를 가지고 있고 아무런 문제가 없습니다 – tyczj

+0

이 문제는 장치와 관련이 없지만 파싱에 관한 것입니다. 다른 오류가 있다고 생각합니다. 한 번에 이것을 시도해보십시오. 해결책을 얻을 수 있습니다.수락을 위해 – MAC

+0

thnx – MAC

4

나는 안드로이드 2.2 장치에서 같은 문제가 및 ksoap2 2.6.5은 안드로이드 2.2와 호환되지 않습니다 것을 알 수 있었다. 글쎄, 그게 문제라고 생각해. 내가 아는 건이 오류들이 던져지는거야. ksoap2를 2.4로 다운 그레이드하고 다시 작동하기 시작했습니다.

+0

예 2.6.5 호환되지 않지만 내 경우에 문제가 아니었다, 그것은 서버 문제가 – tyczj

+2

그게 무슨 가치가있어, 나는 2.6.5에서 3.0 RC로 전환하여 비슷한 문제를 해결 4. 이전에는 2.2 장치에서 끝나지 않은 엔티티 참조 예외가 발생했지만 라이브러리를 업그레이드하면이 장치가 수정되었습니다. –

+1

@ DanDyer : 제안 해 주셔서 대단히 감사합니다! 당신은 내 애플 리케이션 호환성 오류로 인해 2.1 장치에서 작업을 중단했을 때 어떻게 놀라지 모르겠다! 고마워요! – Swayam

0

동일한 문제가있었습니다. 해결책은 XML에서 응답을 보낼 때 "&"을 사용자 이름에 &으로 바꾸어야한다는 것이 었습니다. 일부 사용자에게는 문제가 있었지만 다른 사용자에게는 문제가있었습니다.

"MAC"의 2 단계 대답은

관련 문제