完成后获得 android AsyncHttpClient 响应

get android AsyncHttpClient response after it finish

你好,我正在使用 AsyncHttpClientrestful 发送请求 api 问题是我想在 onSuccess 中得到结果并将其从使用此方法的 class 传递给我的 activity

public int send(JSONObject parameters,String email,String password){
      int i =0;
    try {
        StringEntity entity = new StringEntity(parameters.toString());
        entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
        client.setBasicAuth(email,password);
        client.post(context, "http://10.0.2.2:8080/webapi/add", entity, "application/json",
                new AsyncHttpResponseHandler() {


                    @Override
                    public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                        try {
                            JSONObject json = new JSONObject(
                                    new String(responseBody));
                            i=statusCode;
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                    }

                    @Override
                    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

                    }
                });


    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
return i;
}

当然我总是得到i=0;因为它是 Async 方法 我试图让方法发送 void 并在 onSuccess 中进行回调,但这会在 activity 中产生很多问题(这是我稍后会问的另一个问题) 那么你有没有办法将 i 的值作为 statusCode? 谢谢。

I tried to make the method send void and make a callback inside onSuccess

无效的方法很好。

在 onSuccess 中进行回调可以如下所示

添加回调接口

public interface Callback<T> {
    void onResponse(T response);
}

将其用作参数并使方法无效

public void send(
    JSONObject parameters, 
    String email,
    String password, 
    final Callback<Integer> callback) // Add this

然后,在 onSuccess 方法中,当你得到结果时做

if (callback != null) {
    callback.onResponse(statusCode);
}

在调用 send 的方法之外,创建匿名回调 class

webServer.send(json, "email", "password", new Callback<Integer>() {
    public void onResponse(Integer response) {
        // do something
    }
});