【发布时间】:2012-03-27 17:41:04
【问题描述】:
我正在尝试向服务器执行 POST 请求,该服务器希望将 Content-Type 设置为 application/json,并将名称和电子邮件作为一些键。目前,我收到一个 406 错误,我假设它在服务器端工作,但 android 无法处理响应。如何调整代码以获得 200 响应?
HttpClient client = new DefaultHttpClient();
HttpEntity entity;
try{
JSONObject j = new JSONObject();
j.put("name" , myName);
j.put("email", myEmail);
HttpPost post = new HttpPost(targetURL);
post.setHeader("Content-Type", "application/json");
StringEntity se = new StringEntity(j.toString(), HTTP.UTF_8);
se.setContentType("application/json");
post.setEntity(se);
HttpResponse response = client.execute(post);
entity = response.getEntity();
Log.d("response", response.getStatusLine().toString());
} catch(Exception e){Log.e("exception", e.toString());}
这看起来对吗?在创建 HttpClient 时我是否需要这些响应处理程序之一?
【问题讨论】:
-
您发布到哪个服务器?你控制它,还是有它的代码?你能检查服务器收到的内容吗?如果您无权访问服务器和/或其代码,您可能需要在您的开发机器上设置一个 Tomcat 实例并使用它进行测试。
-
JSON 键名是否正确?您应该发送其他标头吗?
-
很遗憾,我无法访问服务器。我也不知道我是否需要发送其他标头(例如这个接受标头)
-
尝试在请求头中也指定参数Accept:post.setHeader("Accept", "application/json");