我在春天mvc 3.2.2使用apache http客户端发送5请求同步如图所示。如何发送并行GET请求并等待结果响应?
如何将所有这些异步发送(并行)并等待请求返回以便从所有GET请求返回已解析的有效负载字符串?
public String myMVCControllerGETdataMethod()
{
// Send 1st request
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://api/data?type=1");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
// Send 2st request
HttpClient httpclient2 = new DefaultHttpClient();
HttpGet httpget2 = new HttpGet("http://api/data?type=2");
ResponseHandler2<String> responseHandler2 = new BasicResponseHandler();
String responseBody2 = httpclient.execute(httpget, responseHandler2);
// o o o more gets here
// Perform some work here...and wait for all requests to return
// Parse info out of multiple requests and return
String results = doWorkwithMultipleDataReturned();
model.addAttribute(results, results);
return "index";
}
啊,非常酷!我会给这个试驾。谢谢!然而,我有一个问题是我怎么知道迭代循环中的哪个响应?另外,为了让我的控制器无状态地将结果传递给doWorkwithMultipleDataReturned()方法,这意味着什么? – JaJ
示例代码允许您通过'GetRequestTask'抽象将原始请求(URL)与响应进行匹配。所以在这里'//把你的代码放在这里'你已经有两个字符串了。 关于无状态注释,我假设你的方法'doWorkwithMultipleDataReturned'没有接受任何参数,你可能会在控制器的实例变量中保存响应,这使得你的控制器有状态(限制在多个线程中使用相同的实例) 。相反,您应该只将响应的引用保留为方法变量以避免该问题。 – superEb
好点!再次感谢你的信息! – JaJ