#java #gson #okhttp #spark-java
#java #gson #okhttp #spark-java
Вопрос:
Я пытаюсь написать простой сервер с помощью SparkJava, но у меня возникают значительные трудности с сериализацией long с использованием Gson и передачей JSON в клиентскую программу OkHttp внутри обработчика GET. Сервер возвращает NULL, более конкретно response.body.string() является
<html><body><h2>404 Not found</h2></body></html>
Есть идеи о том, в чем может быть проблема? Спасибо.
Вот обработчик получения:
get("routingEngine/getDefaultRoute/distance", (request,response) ->{
response.type("application/json");
long distance = 100;
return gson.toJson(distance);
});
Вот клиентский код, выполняющий простой запрос (пожалуйста, не обращайте внимания на параметры (requestParameters), передаваемые вместе с запросом, они просто предоставляют информацию для нерелевантного фильтра before):
// build url
HttpUrl url = new HttpUrl.Builder()
.scheme("http")
.host("127.0.0.1")
.port(4567)
.addPathSegment("routingEngine")
.addPathSegment("getDefaultRoute")
.addPathSegment("distance")
.build();
// build request
Request getDefaultRouteDistanceRequest = new Request.Builder()
.url(url)
.post(RequestBody.create(JSON,gson.toJson(requestParameters)))
.build();
// send request
Call getDefaultRouteDistanceCall = httpClient.newCall(getDefaultRouteDistanceRequest);
Response getDefaultRouteDistanceResponse = getDefaultRouteDistanceCall.execute();
// parse response
// testing
System.out.println(getDefaultRouteDistanceResponse.body().string());
Последняя строка приводит к следующему выводу
<html><body><h2>404 Not found</h2></body></html>
Комментарии:
1. Может быть, это потому, что вы создаете конечную точку get, а затем используете запрос post в вызове?
2. Да, спасибо @Vishal! Не стесняйтесь указывать этот ответ, чтобы я мог его принять
Ответ №1:
Созданная вами конечная точка была конечной точкой GET, а выполняемый вызов предназначен для POST.