gpt4 book ai didi

java - 无法获取 POST 请求正文

转载 作者:行者123 更新时间:2023-12-01 17:34:06 25 4
gpt4 key购买 nike

我正在尝试从请求发布方法的正文中获取 JSON(使用 insomnia/postman),但我在这方面没有任何进展。我做了一个名为 PlayerData 的类,它只有一个属性(userId)。我正在使用 Jackson 库来使用 readValue 方法,以便将我的 json 正文映射到我的 java 类 PlayerData。为了能够看到发生了什么,我一直在放置打印日志和断点来调试可能发生的情况,但由于某种原因,我的代码跳过了这两个操作。我不回复回复,因为在这种情况下我不想回复。这里的想法只是使用 body 请求中的 userId 设置 PlayerData 的实例,而不需要在磁盘上保存数据。

PlayerData.class

package com.pipa.api;

import lombok.Builder;
import lombok.Value;

@Value
@Builder
public class PlayerData {
private Integer userId;
}

应用程序.java

package com.pipa.api;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.sun.net.httpserver.HttpServer;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;

public class Application {

private static ObjectMapper objectMapper;

public static void main(String[] args) throws IOException {
int serverPort = 8000;
HttpServer server = HttpServer.create(new InetSocketAddress(serverPort), 0);

server.createContext("/post", (exchange -> {
if ("POST".equals(exchange.getRequestMethod())) {
PlayerData playerData = objectMapper.readValue(exchange.getRequestBody(), PlayerData.class);
System.out.println("this print never appear");
} else {
exchange.sendResponseHeaders(405, -1); // 405 Method Not Allowed
}

exchange.close();
}));

server.setExecutor(null); // creates a default executor
server.start();
}
}

最佳答案

代码有 2 个问题。

  1. private static ObjectMapper objectMapper; 从未初始化。因此你会得到 NullPointerException。尝试private static ObjectMapper objectMapper = new ObjectMapper();

  2. 使用 Lombok 和 Jackson,您可能需要进行更改,如 this 中所述。链接

关于java - 无法获取 POST 请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61072515/

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