gpt4 book ai didi

playframework-2.0 - 如何在 play 2 中发出多个 http 请求?

转载 作者:行者123 更新时间:2023-12-05 01:19:34 26 4
gpt4 key购买 nike

我想使用 play 2 为外部 api 发出多个 Web 请求。每个 Web 请求都会因 page 而不同。范围。我的代码是:

static WSRequestHolder urlPaging = WS
.url("http://my_api")
.setQueryParameter("apiKey", "api_key")
.setQueryParameter("pageSize", "5")
.setQueryParameter("format", "json");

public static Result insertProducts() {
int totalPages = 83;
Logger.info("total pages: " + totalPages);
for (int currentPage = 1; currentPage < totalPages; currentPage++) {
Logger.info("--current page:" + currentPage);
result(currentPage);
}
return ok();
}

public static AsyncResult result(int currentPage) {
return async(urlPaging
.setQueryParameter("page", String.valueOf(currentPage)).get()
.map(new Function<WS.Response, Result>() {
public Result apply(WS.Response response) {
insertProductsFromPage(response);
return ok();
}
}));
}

它适用于第 1 页,但给我第 2 页的内部错误,所以我怀疑我不是在构建 result异步请求方法正确。请注意,我不需要这个真正的异步,因为我从管理员运行它,我可以在那里等待,直到所有这些请求都被解析,但我还没有在 play 2 中找到同步方式。你能告诉我我做错了什么吗?

最佳答案

如果要同步进行外部 WS 调用,只需使用 get() promise 的方法。

例如:

Promise<WS.Response> promise = urlPaging.setQueryParameter("page", String.valueOf(currentPage)).get();
WS.Response response = promise.get(); // wait for the result of the promise.

关于playframework-2.0 - 如何在 play 2 中发出多个 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12758956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com