0

我有问题:在 Android 2 上,下面的代码可以正常工作,但在 Android 4 上不起作用...

try {
    HttpParams params = new BasicHttpParams(); 
    HttpConnectionParams.setConnectionTimeout(params, 15000); 
    HttpClient client = new DefaultHttpClient(params);  
    String postURL = "http://web.lt/data.php";
    HttpPost post = new HttpPost(postURL);
    List<NameValuePair> paramss = new ArrayList<NameValuePair>();
    paramss.add(new BasicNameValuePair("X", "k"));
    paramss.add(new BasicNameValuePair("Y", "x"));
    paramss.add(new BasicNameValuePair("speed", "xyz"));
    UrlEncodedFormEntity ent = new UrlEncodedFormEntity(paramss,HTTP.UTF_8);
    post.setEntity(ent);
    HttpResponse responsePOST = client.execute(post);  
    HttpEntity resEntity = responsePOST.getEntity();

    if (resEntity != null) {    
        Log.i("RESPONSE",EntityUtils.toString(resEntity));
    }
} catch (Exception e) {
    e.printStackTrace();
}

我尝试下载https://code.google.com/p/httpclientandroidlib/并安装右键单击项目 -> 属性 -> Java 构建路径 -> 库 -> 添加外部 JAR,但是当我更改时:

inport org.apache.http

import ch.boye.httpclientandroidlib.HttpEntity;

...应用程序崩溃。

4

2 回答 2

2

您必须在主 UI 线程上执行连接,这在 android 2 及更高版本中允许,但在蜂窝及更高版本中已停止。请参阅 Android AsyncTask

于 2013-03-31T09:18:34.453 回答
1

这是一个众所周知的问题。从AsyncTaskService进行调用,而不是从 UI 线程执行它。UI 线程上的网络调用会阻塞 UI 并提供糟糕的用户体验。在更高版本的 Android 中会引发异常以避免这种情况。

于 2013-03-31T10:02:33.983 回答