Android 未获得响应=httpclient.execute(请求);

Android 未获得响应=httpclient.execute(请求);,android,httpclient,http-post,Android,Httpclient,Http Post,这是代码,但是在response=http.client.execute(request)上没有得到响应。我找不到原因。首先,通过执行以下两个步骤,尝试将返回类型更改为String 改变 public class HTTPPoster { public static HttpResponse doPost(String url, JSONObject c) throws ClientProtocolException, IOException { HttpCl

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

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

改变

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;
    }

}

改变

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


现在检查响应字符串?还是空的吗



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

String response; 

如果您将响应代码的值设置为200,则表示您正在从服务器获取数据,如果响应代码值>=300,则表示您的服务器端有错误。

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

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

将sdk的最低版本设置为9这是一个权限问题


将这一行
添加到您的清单文件并重新生成。

对不起,德米特,我很想回答您的问题,但您没有给我们太多的工作。用最礼貌的方式写下这封信。仅仅索取代码并不是最好的行为。你得到了什么样的回应?它是空的吗?是否引发异常?响应不是
HtppResponse
,而是
字符串
。或者,您如何使其成为一个
HttpResponse
?这是否取决于
响应handler
?@Peterdk:请查看我在您发表评论后提出的以下问题。我给出的答案是正确的。请更新您的知识。请查看我的问题:如果您提供
响应handler
,该方法将返回
T
。因此,还有一个可用的
execute
通用方法,在
BasicResponseHandler
的情况下,它会返回一个字符串。非常感谢您!我发现所有http请求示例都不起作用。在我添加代码之后,所有示例都可以正常工作!为什么这些示例没有提到您的代码?@YiFeng您也可以使用android的asyncTask功能来实现相同的结果。这里是指向asyncTask的快速链接。您应该在doBackgroundTask函数中调用http请求。在android中,在主线程中执行阻塞任务不是首选。阻塞任务应该在后台完成-非常有用
String response; 
HttpResponse response = httpClient1.execute(request);
                    Log.v("response code", response.getStatusLine()
                            .getStatusCode() + ""); 
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);