大家好我拥有适用于其他平台(1.6+以上)的示例应用程序但是同样的应用程序无法在我的新Android 4.1模拟器上运行。问题是关于HttpConnection。意味着我想要登录然后我无法做到这一点。代码没有问题,因为它适用于所有其他AVD(1.6,2.1,2.2)。
我也尝试使用简单的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");
在所有其他平台上,我得到了作为String的响应,但是在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 :(得分: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;