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)
没有得到回应。我找不到原因。
答案 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" />
添加到您的清单文件并重建。