2013-06-11 1 views
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 방법에

답변

1

:

if (name == "true"){ 
      return true; 
     } 

사용 :

if (name.equals("true")){ 
      return true; 
     } 

가 한번보십시오.

+0

감사합니다. D - It Worked –