简体   繁体   English

如何跟踪AsynchHttpClient请求

[英]How to keep track of AsynchHttpClient request

Hi I'm trying to put do something like this. 嗨,我正在尝试做这样的事情。 Any idea how to know which request is corresponding to which project? 任何想法如何知道哪个请求对应于哪个项目?

for (int i=0; i<projects.size(); i++) {
    post("api/Project/getProductionTime", rp, new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response)
        {
            projects.get(i).setAmount(<things from response>)
        }
    }
}

I guess you can 'freeze' you project before creation an instance of JsonHttpResponseHandler and after use it inside onSuccess block: 我猜您可以在创建JsonHttpResponseHandler实例JsonHttpResponseHandler以及在onSuccess块中使用它之后“冻结”您的项目:

final <project type> project = projects.get(i);

just before post(). 就在post()之前。

If not, you can create an Map which can keep one-to-one correspondes between projects and requests. 如果没有,您可以创建一个Map,该Map可以在项目和请求之间保持一一对应。

Update: Please not that I'm unable to test this code as I dont know your project structure. 更新:请不要因为我不知道您的项目结构而无法测试此代码。

// I assume that both Project and MyJsonHttpResponseHandler has hashCode() and equals() methods
// MyJsonHttpResponseHandler is a subcalss of JsonHttpResponseHandler with hashCode() and equals() methods
private final ConcurrentHashMap<MyJsonHttpResponseHandler, Project> map = new ConcurrentHashMap<>();
...
for (int i=0; i<projects.size(); i++) {
    MyJsonHttpResponseHandler handler = new MyJsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response)
        {
            Project project = map.get(this);
            project.setAmount(<things from response>);

            map.remove(this);
        }
    };
    map.put(handler, projects.get(i));
    post("api/Project/getProductionTime", rp, handler);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM