我们找到了以下示例,该示例有效:
import java.net.http.HttpClient;
:
private static final HttpClient httpClient = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1)
.connectTimeout(Duration.ofSeconds(TIMEOUT)).build();
:
public String getStuff(HashMap<String,String> params) {
HttpRequest request = HttpRequest.newBuilder().GET().uri(URI.create("https://httpbin.org/get"))
.setHeader("User-Agent", "My Agent v1.0")
.build();
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
return response.body();
}
问题是我们如何将参数放入请求中?我们可以通过字符串操作手动将它们放入 URI 中,但这不适用于 POST。
我们希望有一个类似于 setHeader 的 setParameter 方法,但这并不存在(至少根据 eclipse 的说法)。
现在我是这样手动操作的:
String uri = "http://Somesite.com/somepath";
if (params != null) {
uri += "?";
for (String key : params.keySet()) {
uri += "" + key + "=" + params.get(key);
}
}
HttpRequest request = HttpRequest.newBuilder().GET().uri(URI.create(uri))
.setHeader("User-Agent", agent)
.build();
大概对于 POST 生病必须手动构建具有 post params 结构的主体。
答案 0 :(得分:1)
使用javax.ws.rs.core.UriBuilder
它有 queryParam
方法。
例如:
UriBuilder.fromLink( Link.fromUri( "somehost" ).build() )
.path( API_SERVICES )
.queryParam( "path", path)
.queryParam( "method", method )
.build();