0

我使用eclipse,問題是我的httpConnection代碼適用於android 2.3.3。但它不適用於android 5.0我無法處理它。Android 5.0 OpenHttpConnection錯誤

private InputStream OpenHttpConnection(String urlString) throws IOException{ 
    InputStream in = null; 
    int response = -1; 
    URL url = new URL(urlString); 
    URLConnection conn = url.openConnection(); 
    if(!(conn instanceof HttpURLConnection)) 
     throw new IOException("Not an HTTP connection"); 
    try{ 
     HttpURLConnection httpConn = (HttpURLConnection) conn; 
     httpConn.setRequestMethod("GET"); 
     httpConn.connect(); 
     response = httpConn.getResponseCode(); 
     if(response == HttpURLConnection.HTTP_OK){ 
      in = httpConn.getInputStream(); 
     } 
    } 
    catch(Exception ex){ 
     throw new IOException ("Error connecting"); 
    } 
    return in; 
} 

它給我「錯誤連接」上的android 5.0也android 4.0.3。

+0

這是你自己的錯誤字符串。你扔掉有價值的信息。你應該使用ex.getMessage()來獲得真正的錯誤。查看和發佈你的logcat,因爲你有更多的錯誤/例外。 – greenapps 2014-12-06 16:46:40

回答

0

由於您描述使用android 2.3.3時未出現此錯誤,因此可能與新的「嚴格模式」有關。

當您在主線程上執行網絡操作時,它可能會減慢或阻止在主線程上運行的GUI的處理。這會導致無響應的行爲。 由於API級別9,有所謂的「嚴格模式」,它阻止了這種行爲。因此,您必須使用AsyncTask並在後臺線程上運行網絡操作。如果你不這樣做,你通常會遇到這樣的錯誤。正如在上面的評論中提到的 - 你應該得到更多關於拋出的異常的信息,以便找出真正的問題。

參見:stackoverflow post: cannot-connect-using-httpconnection-in-android

,並閱讀更多有關的AsyncTask:AsyncTask