Long

问题描述

我试图用SparkJava编写一个简单的服务器,但是我在使用Gson进行长时间序列化并将JSON传输到GET处理程序中的OkHttp客户端程序方面遇到了很大的困难。服务器返回NULL,更具体地说是response.body.string()是

<html><body><h2>404 Not found</h2></body></html>

关于这个问题可能有什么想法?谢谢。

这是GET处理程序:

get("routingEngine/getDefaultRoute/distance",(request,response) ->{
    response.type("application/json");
    long distance = 100;
    return gson.toJson(distance);
});

这是发出简单请求的客户端代码(请忽略与请求一起传递的参数(requestParameters),它们只是在过滤之前为无关的信息提供信息):

    // 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>

解决方法

您创建的端点是GET端点,正在进行的呼叫是POST。