如何将AsyncHttpResponseHandler响应作为JSONObject?

时间:2015-07-21 20:18:47

标签: java android rest

My Java Restful服务登录方法在ResponseBuilder实体中返回JSONObject(带有名称,用户名等)。我试图在我的Android应用程序中将其放入AsyncHttpResponseHandler(使用loopj)。问题是:onSuccess方法需要byte []响应,而不是JSONObject。如何在onSuccess方法中获取JSONObject以便在我的应用程序中使用它的值(用户数据)?

这是我的代码:

My Restful API登录方法

public Response login(@Context HttpHeaders httpHeaders,
            @FormParam("username") String username,
            @FormParam("password") String password) {

        Authenticator authenticator = Authenticator.getInstance();
        String serviceKey = httpHeaders
                .getHeaderString(HTTPHeaderNames.SERVICE_KEY);

        try {
            // My login method returns an JSONObject with data of the logged user
            JSONObject obj = authenticator
                    .login(serviceKey, username, password);

            return getNoCacheResponseBuilder(Response.Status.OK).entity(obj)
                    .build();

        } catch (final LoginException ex) {
            return getNoCacheResponseBuilder(Response.Status.UNAUTHORIZED)
                    .entity(ex.getMessage()).build();
        }
    }

我的应用上的登录方式:

 private void loginTask(RequestParams params){
    AppRestClient.post("access/login", params, new AsyncHttpResponseHandler() {

        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] response) {             

            // Here I want to get the JSONObject, but response is
            // returning something like [B@653abba
            Log.d(TAG, response);

        }

       ...
  }

我应该将byte []转换为JSONObject(如果是,我该怎么做?)还是应该更改ResponseBuilder实体以返回与JSONObject不同的内容?

我已经尝试使用JsonHttpResponseHandler类,但响应为空。

0 个答案:

没有答案