2012-06-26 25 views
0

閱讀我得到這個錯誤,同時訪問一個PHP腳本:錯誤從html.class

W/System.err: Error reading from ./org/apache/harmony/awt/www/content/text/html.class 

有問題的代碼片段如下:

URL url = "http://server.com/path/to/script" 
is = (InputStream) url.getContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
StringBuilder sb = new StringBuilder(); 
String line = null; 
while ((line = reader.readLine()) != null) { 
    sb.append(line + "\n"); 
} 
is.close(); 

該錯誤是在第二行拋出。對搜索錯誤的Google搜索結果爲0。這個警告不影響我的應用程序的流程,它更多的是煩惱而不是問題。它也只發生在API 11設備上(在API 8設備上工作正常)

+0

你可以發佈你的整個Logcat –

+0

@K_Anas這是我的全部錯誤 –

回答

1

如果您正在查詢一個PHP腳本,我很確定聲明一個URL,然後嘗試將InputStream關閉它isn 「T做正確的方式...

試着這麼做:

HttpClient httpclient = new DefaultHttpClient(); 
HttpGet httpGet = new HttpGet("http://someurl.com"); 

try { 
// Execute HTTP Get Request 
HttpResponse response = httpclient.execute(httpGet); 

HttpEntity entity = response.getEntity(); 

if (entity != null) { 

    InputStream instream = entity.getContent(); 
    String result = convertStreamToString(instream); 

      // Do whatever with the data here 


      // Close the stream when you're done 
    instream.close(); 

    } 
} 
catch(Exception e) { } 

而且對於流很容易轉換成字符串,就調用這個方法:

private static String convertStreamToString(InputStream is) { 

    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      is.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 
1

爲什麼不使用HttpClient?恕我直言,這是一個更好的方式來進行http調用。檢查如何使用here。同時請確保不要通過讀取InputStream的響應來重新發明輪子,而是使用EntityUtils

+1

基本上我是Cruceo建議的第二種,但是有一種更好的閱讀方式 - 使用EntityUtils'。 –

+0

這是天才。我甚至不知道存在。謝謝! – Guardanis