JAX-RS @POST不返回String

时间:2016-09-07 01:23:42

标签: java web-services rest jax-rs

我正在尝试编写@POST同步方法,它将接收2个String参数。当我从浏览器访问2个链接时,我没有得到返回String“SUCCESS!”。似乎这些方法根本没有被调用?

http://localhost:9080/SampleWeb/resources/helloworld/sync?param1=string1&param2=string2

http://localhost:9080/SampleWeb/resources/helloworld/sync/string1/string2

@Path("/helloworld")
public class HelloWorldResource {   

    @POST
    @Produces("text/plain")
    @Path("/sync")
    public String sync(
            @QueryParam("param1") String param1,
            @QueryParam("param2") String param2) {

        //do something

        return "SUCCESS!";
    }

    @POST
    @Produces("text/plain")
    @Path("/sync/{param1}/{param2}")
    public String sync(
            @PathParam("param1") String param1,
            @PathParam("param2") String param2) {

        //do something

        return "SUCCESS!";
    }
}   

2 个答案:

答案 0 :(得分:1)

您说您正在通过浏览器访问链接 - 您是否正在浏览"到URL,或者您是否从表单提交(或使用javascript)显式POST到URL?如果您只是浏览"到链接(即点击链接或将其放在地址栏中),您的浏览器将执行GET,而不是POST。

如果你正在使用Unix操作系统或在Windows上安装了curl,你可以使用curl来执行POST,你应该会收到" SUCCESS!"响应:

 curl -X POST http://localhost:9080/SampleWeb/resources/helloworld/sync?param1=string1

答案 1 :(得分:0)

如果您尝试直接从浏览器访问该URL,您将访问GET方法。要访问其他HTTP方法,您可以使用一些像REST客户端一样的浏览器插件,例如,我使用RESTClient Firefox插件。在那里,您可以提供其他选项,如Request Body和其他有用的选项,如HTTP Headers as Content-type:application / json。