使用cURL和Paramaters来调用Java REST方法 - HTTP / 1.1 500 java.lang.NullPointerException?

时间:2016-11-11 14:48:25

标签: java rest curl jax-rs http-status-code-404

我正在尝试使用Java测试以下cURL 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

1 个答案:

答案 0 :(得分:0)

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

目前,您错过了查询网址中的{Id}{userName}部分:

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

您应该将注释切换为:

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

实际上替换查询URL中的值。如果您使用-d添加它们,则会将其作为数据添加到请求中,而不会在网址中替换。

并执行GET请求,而不是PUT,因为您已经定义了代码。

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