我正在使用loopj的AsyncHttpClient for Android,这样我就可以与我创建的一个安静的Web应用程序进行交互。我已经使用Postman测试了一个POST请求,它运行正常。
然而,在Android中我很难做一个帖子请求,但因为内容类型总是设置为text / html ..
RequestParams params = new RequestParams();
params.setUseJsonStreamer(true);
params.put("email", "android@tester.com");
StringEntity se = null;
try {
se = new StringEntity(params.toString());
se.setContentType("application/json");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Header headers[] = {};
if(getActivity() != null){
RestClient.postWithContentType(getActivity(), "contacts", se, "application/json", new AsyncHttpResponseHandler() {
//onSuccess and onFailure methods ommitted
});
它一直都失败了,我在logcat中收到了这条消息: 传递的contentType将被忽略,因为HttpEntity设置了内容类型。
所以,我试图改变这个,
public static void postWithContentType(Context context,String url,StringEntity s,String contentType, AsyncHttpResponseHandler responseHandler){
s.setContentType("application/json");
client.post(context, getAbsoluteUrl(url), s, contentType, responseHandler);
}
然而,我仍然得到同样的信息,这真的令人沮丧,而且我一直试图弄清楚它多年了! 如果有人知道如何设置内容类型 - 将非常感谢,谢谢!
答案 0 :(得分:2)
我有同样的问题。
我无法理解哪个会影响它,因为它在几天前确实有效。我只需手动添加标题即可。
只需在RestClient.addHeader("Content-Type", "application/json");
代码上方添加RestClient.postWithContentType(...)
。
答案 1 :(得分:1)
RequestParams requestParams = new RequestParams();
asyncHttpClient.addHeader("Accept", "text/json");
asyncHttpClient.addHeader("content-type", "application/json");
asyncHttpClient.post(context, getAbsoluteUrl(url), requestParams, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, String content) {
super.onSuccess(content
// Ur logic
}
@Override
public void onFailure(Throwable error, String content) {
super.onFailure(error, content);
// Ur logic
}
});