Я пытаюсь получить JSON из тела метода запроса (используя бессонницу / почтальона), но у меня нет прогресса в этом. Я сделал класс с именем PlayerData, который имеет только один атрибут (userId). Я использую библиотеку Джексона для использования метода readValue, чтобы сопоставить мое json тело с моим java классом PlayerData. Чтобы увидеть, что происходит, у меня есть журнал печати и точки останова для отладки того, что может быть, но по какой-то причине они оба пропускаются моим кодом. Я не возвращаю ответ, потому что в этом случае я не хочу. Идея здесь состоит только в том, чтобы установить экземпляр PlayerData с userId из запроса тела, без необходимости сохранять данные на диске.
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();
}
}