使用loopj android-async-http和授权标头无法使用Post提交Content-Type

时间:2012-09-06 22:30:26

标签: android jersey loopj android-async-http

我在使用点火项目遇到同样的问题后,我正在使用loopj / android-async-http。

当我提交GET时,没有授权标题,一切正常:

AsyncHttpClient client = new AsyncHttpClient();
client.get(url, params, responseHandler);

我正在发送到Jersey服务器,日志记录过滤器显示预期的数据:

INFO: 1 * Server in-bound request
1 > GET http://mydomain.com/myresource/
1 > host: mydomain.com
1 > accept-encoding: gzip
1 > user-agent: android-async-http/1.4.0 (http://loopj.com/android-async-http)
1 > connection: Keep-Alive

经过身份验证的GET也可以。

如果我对同一网址的POST请求做同样的事情:

AsyncHttpClient client = new AsyncHttpClient();
String auth = user + ":" + pass;
client.addHeader("Authorization", "Basic " + Base64.encodeToString(auth.getBytes(), Base64.DEFAULT));
client.post(context, url, entity, "application/json", responseHandler);

服务器没有显示我希望看到的多个信息,我不明白为什么:

INFO: 2 * Server in-bound request
2 > POST http://mydomain.com/myresource/
2 > host: mydomain.com
2 > accept-encoding: gzip
2 > authorization: Basic GFzasomethingvalidhereXN0
2 > connection: Keep-Alive
  1. 为什么我看不到“Content-Type”标题?这是我遇到的主要问题,因为我的Jersey资源被注释为使用application / json数据

  2. 为什么我看不到“用户代理”标题?

  3. 我的泽西岛资源:

    @Service
    @Path("/myresource/")
    public class MyResource {
    
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public MyDTO myEndPointMethod(MyDTO myDTO) {
       //something cool here
    }
    

0 个答案:

没有答案