如何使用Java 11 HttpClient库在GET方法中发送请求体
Java 11 HttpClient GET请求携带请求体实现方案
你当前写的代码无法正常编译,因为Java 11 HttpClient内置的GET()方法为无参方法,原生不支持直接传入请求体发布器。可以通过自定义请求方法的方式实现需求,代码修改如下:
// JSON构造逻辑保持原有实现即可 String jsonBody = jsonObject.toString(); HttpRequest request = HttpRequest.newBuilder(uri) .header("Content-Type", "application/json") // 核心修改:通过method方法指定请求类型为GET,同时传入请求体 .method("GET", HttpRequest.BodyPublishers.ofString(jsonBody)) .build(); HttpClient client = AppHttpClient.getInstance(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
注意事项
- 该实现仅适用于目标API明确要求GET携带请求体的场景,HTTP标准规范中GET请求语义上不推荐携带请求体,部分代理、网关服务可能会直接丢弃GET请求的请求体内容,导致请求异常。
内容的提问来源于stack exchange,提问作者khateeb
相关产品推荐
相关产品推荐

