【问题标题】:Handling POST Request in Java 11在 Java 11 中处理 POST 请求
【发布时间】:2021-04-22 08:51:01
【问题描述】:

我在使用 Java 11 嵌入式库 java.net 处理 POST 请求时遇到问题。

客户端: 我的QueryGenerator 类中有两种方法:

public String postTeachers(String newTeachersList) {
    this.customRequest = HttpRequest.newBuilder()
            .uri(URI.create("http://" + serverIPport + "/" + postTeachers))
            .POST(HttpRequest.BodyPublishers.ofString(newTeachersList))
            .build();
    return getResponseResults();
}

用于创建发布请求。

我还有一个getResponseResults() 方法

private String getResponseResults() {

    String result = null;
    try {
        CompletableFuture<HttpResponse<String>> response = CustomHttpClientSingleton.getInstance().sendAsync(customRequest, HttpResponse.BodyHandlers.ofString());
        result = response.thenApply(HttpResponse::body).join();
    } catch(RuntimeException e) {
        System.out.println("Seems like the server may not be working properly! Restart it");
    }
    return result;
}

服务器端: 我有一个方法handlePostRequest

private void handlePostRequest(HttpExchange httpExchange) throws IOException {
    Headers headers = httpExchange.getResponseHeaders();
    httpExchange.sendResponseHeaders(200, 0);
    InputStream is = httpExchange.getRequestBody();
    System.out.println(is.toString());
    is.close();
}

我在 HttpServer 中收到 POST 请求,但是当我尝试显示请求正文的内容时,我没有得到任何信息。我期待收到我的 ArrayList 集合的 JSON 表示,但我得到的唯一输出是: sun.net.httpserver.FixedLengthInputStream

有没有办法在 POST 请求中获取 http 客户端发送的请求正文,并通过 Java 11 java.net 嵌入式库在服务器端使用它。

谢谢大家!

【问题讨论】:

    标签: java http post request client-server


    【解决方案1】:

    你必须阅读Inputstream的内容,而不仅仅是申请toString()

    https://www.baeldung.com/convert-input-stream-to-string

    【讨论】:

      【解决方案2】:

      您似乎没有正确读取输入流。尝试读取输入流,而不是对其调用 toString()。请查看How to get an HTTP POST request body as a Java String at the server side? 了解更多信息。

      【讨论】:

        猜你喜欢
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-03
        相关资源
        最近更新 更多