0
저는 안드로이드 앱을 만들고 있습니다. XML 파서가 있습니다. 그렇지 않은 경우xml을 구문 분석하는 중 ... prob를 ithink하세요. 인코딩에 관한 것입니다
<status>true</status>
:
private InputStream downloadUrl(String urlString) throws IOException {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
String encoded;
encoded = "Basic " + Base64.encodeToString("user:pass".getBytes(), 0);
conn.setRequestProperty("Authorization", encoded);
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.connect();
InputStream stream = conn.getInputStream();
return stream;
}
사용자와 패스가 정확하면 XML의 출력은 다음과 같습니다 XML은이 내가되는 InputStream에 다운로드 방법입니다 내 API의 반응 의 유형입니다
<status>false</status>
및 파서 클래스는 다음과 같습니다
private static final String ns = null;
public Boolean parse(InputStream in) throws XmlPullParserException, IOException {
try {
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in, null);
parser.nextTag();
return readFeed(parser);
} finally {
in.close();
}
}
private Boolean readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
parser.require(XmlPullParser.START_TAG, ns, "verify_account");
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equals("status")) {
return readSta(parser);
} else {
skip(parser);
}
}
return false;
}
private Boolean readSta(XmlPullParser parser) throws IOException, XmlPullParserException {
parser.require(XmlPullParser.START_TAG, ns, "stats");
String name = readText(parser);
parser.require(XmlPullParser.END_TAG, ns, "stats");
if (name == "true"){
return true;
}
else {
return false;
}
}
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
String result = "";
if (parser.next() == XmlPullParser.TEXT) {
result = parser.getText();
parser.nextTag();
}
return result;
}
문제는 PareXml 클래스가 항상 false를 반환한다는 것입니다. 하지만 태그의 값을 인쇄하고 "true"였습니다 readSta function line에서 "true"전후에 공백을 추가하려고 시도했지만 작동하지 않습니다. . 인코딩 문제 인 것 같습니다.
많은 것을 시도했지만 여전히 작동하지 않습니다. | 대신 사용하여 readSta 방법에
감사합니다. D - It Worked –