2012-11-01 84 views
1

大家好我有其他平臺(從1.6+)工作的示例應用程序但相同的應用程序不工作在我的新的Android 4.1模擬器。問題是關於HttpConnection。意思是假設我想要登錄,那麼我無法做到這一點。代碼沒有問題,因爲它可以在所有其他AVD(1.6,2.1,2.2)上正常工作。應用程序不能在Android 4.1上工作

我也嘗試了簡單的httpconnection代碼,但仍然無法正常工作。

有任何特殊設置需要在4.1上運行模擬器上的互聯網。但在我以前的平臺上我沒有做任何設置。

我HttpConnection的代碼是:

public String httpGetResponse(String url) { 
    connectionUrl = url; 
    query_string=""; 
    String response = null; 
    try { 
     int loc = url.indexOf('?'); 
     if(loc>-1){ 
      try { 
       query_string=url.substring(loc); 
      } catch (Exception e) { 
       query_string=""; 
      } 
     } 
     processGetRequest(); 
     HttpResponse httpresponse = httpclient.execute(host, get); 
     response = EntityUtils.toString(httpresponse.getEntity()); 
    } catch (Exception e) { 
     response = null; 
    } 
    return response; 
} 

我調用此方法爲:

response = connectionUtil.httpGetResponse("My URL"); 

在我得到了響應,字符串中所有其他平臺,但隨着4.1我得到的響應爲:

response:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org   /TR/html4/loose.dtd"><HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso- 8859-1"><TITLE>ERROR: The requested URL could not be retrieved</TITLE> 

..........

任何建議將不勝感激提前致謝。

+0

您是否收到任何錯誤? –

+0

我認爲你使用Asyntask? – ckpatel

+1

這裏你去:[** Android NetworkOnMainThreadException **](http://www.vogella.com/blog/2012/02/22/android-strictmode-networkonmainthreadexception/) –

回答

2

這個問題有兩個解決方案。

1)不要在主UI線程中使用異步任務編寫網絡調用。

2)在setContentView(R.layout.activity_main)之後將代碼寫入MainActivity文件中;

if (android.os.Build.VERSION.SDK_INT > 9) { 
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
} 

和下面的import語句放到你的java文件中。

import android.os.StrictMode; 
+0

謝謝你的建議。 – PPD

+0

@Keshariya:爲什麼HTML編碼在android 4.1及更高版本中無法正常工作。 äüö€ –

+0

@HiteshDhamshaniya你有什麼錯誤? –

相關問題