Обработчик получения SparkJava, возвращающий значение NULL после сериализации Long

#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.