使用带参数的 cURL 调用 Java REST 方法 - HTTP/1.1 500 java.lang.NullPointerException?

Using cURL with Paramaters to call Java REST method - HTTP/1.1 500 java.lang.NullPointerException?

我正在尝试使用 cURL 测试以下 Java REST 处理程序方法:

    @GET
    @Path("/application/façade/Id/{Id}/userName/{userName}/associatePerson")
    public Response getInformationRelatingToUser(@PathParam("Id") String id, @PathParam("userName") String userName){

       //do stuff
    }

我对使用 cURL 还很陌生。

下面是我用来测试的 cURL 命令,我知道 port 绝对正确。这个 curl 命令语法正确吗?

curl -X PUT -i -H "Accept: application/json" "localhost:9981/application/façade/Id/userName/associatePerson" -d "Id=testId" -d "userName=testUsername"

当我 运行 命令并查看 Intelij 时,我收到以下错误:

javax.ws.rs.NotFoundException: HTTP 404 Not Found
ERROR o.g.j.server.ServerRuntime$Responder - Error occurred when processing a response created from an already mapped exception.

并且在 Cywgin 内 运行 宁 cURL 我得到以下响应:

HTTP/1.1 500 java.lang.NullPointerException
Content-Length: 0
Connection: keep-alive

注意:我使用的 REST 实现是 JAX-RS

@Path("/application/façade/Id/{Id}/userName/{userName}/associatePerson")

目前您在查询中缺少 {Id}{userName} 部分 URL:

localhost:9981/application/façade/Id/{MISSING}/userName/{MISSING}/associatePerson

您应该将注释切换为:

@Path("/application/façade/{Id}/{userName}/associatePerson")

并实际替换查询中的值 URL。如果您使用 -d 添加它们,它们将作为 data 添加到请求中,而不是在 URL.

中被替换

并执行 GET 请求而不是 PUT,因为这就是您定义的代码。

curl -X GET -i -H "Accept: application/json" "localhost:9981/application/façade/testId/testUsername/associatePerson"