Android HttpClient适用于2.2但不适用于4

时间:2013-01-16 05:57:35

标签: android apache-httpclient-4.x

我有一个方法(如下)从我的android程序中的Web服务获取数据。它适用于Android 2.2。但是在4.x中,它会抛出一条带有“Error Requesting API”消息的异常。不确定哪个部分导致我的代码中的异常以及为什么只有4.x可以有人给我一些指示?

        public static synchronized String performHTTPRequest(HttpUriRequest request)
                throws ApiException, ParseException, IOException {
            HttpClientWrapper cli=new HttpClientWrapper();
            HttpClient client;
            try {
                client=cli.getClient();
                HttpResponse response = client.execute(request);
                // Check if server response is valid
                StatusLine status = response.getStatusLine() ;

            if (status.getStatusCode() != HTTP_STATUS_OK) {
                throw new ApiException("Invalid response from server: " + status.toString());
            }
            return EntityUtils.toString(response.getEntity());
        } catch (MalformedURLException e) {
            throw new Error(e);
        }  catch (Exception cnrce) {
            throw new ApiException("Error requesting API:");
        }
    }

1 个答案:

答案 0 :(得分:1)

在4.0或以上的版本中,您无法在ui线程上执行任何http请求。 您需要在asynctask中执行这些操作。 编辑: Documentation

Code example for asynctask