为Rest客户端设置Json内容类型

时间:2014-09-26 14:34:56

标签: android json rest post content-type

我正在使用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); 
  }

然而,我仍然得到同样的信息,这真的令人沮丧,而且我一直试图弄清楚它多年了! 如果有人知道如何设置内容类型 - 将非常感谢,谢谢!

2 个答案:

答案 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
   }
});