没有得到响应响应= httpclient.execute(请求);

时间:2011-08-04 09:36:22

标签: android httpclient http-post

public class HTTPPoster {
    public static HttpResponse doPost(String url, JSONObject c) throws ClientProtocolException, IOException 
    {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost request = new HttpPost(url);

        HttpEntity entity;
        StringEntity s = new StringEntity(c.toString());
        s.setContentEncoding((Header) new BasicHeader(HTTP.DEFAULT_CONTENT_CHARSET, "application/json"));
        entity = s;
        request.setEntity(entity);

        HttpResponse response;

        response = httpclient.execute(request);

        return response;
    }

}

这是代码,但 response = http.client.execute(request) 没有得到回应。我找不到原因。

4 个答案:

答案 0 :(得分:3)

您应该异步调用该方法。然后它将使用相同的代码。 将这两行代码添加到项目中

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

和 将最低sdk版本设为9

答案 1 :(得分:1)

您可以使用以下代码检查是否从服务器获得响应:

HttpResponse response = httpClient1.execute(request);
                    Log.v("response code", response.getStatusLine()
                            .getStatusCode() + ""); 

如果您将响应代码的值设置为200,那么您将从服务器获取数据,如果响应代码值> = 300,那么您的服务器端就会出错。

答案 2 :(得分:0)

首先尝试通过执行这两个步骤将返回类型更改为String

更改

public static HttpResponse doPost(String url, JSONObject c) throws ClientProtocolException, IOException 

public static String doPost(String url, JSONObject c) throws ClientProtocolException, IOException 

更改

HttpResponse response; 

String response; 

现在检查响应字符串?它仍然是空的吗?


答案 3 :(得分:0)

这是许可问题。

将此行<uses-permission android:name="android.permission.INTERNET" />添加到您的清单文件并重建。