0

到目前为止,我的 HTTP POST 请求没有任何问题。

try {
        DefaultHttpClient client = new DefaultHttpClient();
        HttpParams params = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(params, 1000);
        client.setParams(params);
        HttpPost post = new HttpPost(NETWORK_CHECK_CONTROLLER_ADDRESS);
        ResponseHandler<String> handler = new BasicResponseHandler();
        HttpResponse response = client.execute(post);// here in 4.0
        String responseString = handler.handleResponse(response);
        JSONObject json = new JSONObject(responseString);
    } catch (Exception e) {

        logReporter.add("Could not connect to controller");
        Log.d("4.0 tests",e.getCause()+" ");
        return false;
    }

    return true;

当我以 API 版本 8 为目标时,此请求从未失败或引发异常,如清单中所指定。

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

之前

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="8" />

现在我的发布请求每次都失败,并且异常消息始终为 Null。就发布请求而言,android api 8 和 15 有什么不同?

是的,我确定我要发布到的服务器在线。当我将它切换回 api 8 时,一切都很好。

4

3 回答 3

2

可以是您从 UI 线程发帖吗?在这种情况下,将从 Gingerbread 开始抛出异常。

于 2012-07-17T13:59:16.387 回答
0

如果您使用的是 4.0+ 版本,则必须在单独的线程中调用 HTTP 请求。

于 2013-01-15T04:43:27.603 回答
0

问题是您正在主 UI 线程上执行网络访问。NetworkAccessOnMainThread如果您尝试在主线程上执行 HTTP 请求,Android 3.0 及更高版本将使您的应用程序崩溃(即系统将抛出异常)。您需要将您的 HTTP 请求包装在一个AsyncTask(或Thread某种类型的)中,以确保您不会阻塞 UI 线程。

阅读我关于该主题的博客文章:

为什么冰淇淋三明治会使您的应用程序崩溃

于 2012-07-17T14:27:30.363 回答