2016-09-07 33 views
0

我想寫@POST同步方法,它將採取2個字符串參數。當我從瀏覽器訪問2個鏈接時,我沒有得到返回字符串「SUCCESS!」。看來這些方法根本不會被調用?JAX-RS @ POST不返回字符串

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!"; 
    } 
} 

回答

1

你說你從瀏覽器訪問的鏈接 - 你「瀏覽」,將該網址,或者是你明確地發佈到URL從表單提交(或使用JavaScript)?如果您只是「瀏覽」鏈接(即單擊鏈接或將其放入地址欄),瀏覽器將執行GET,而不是POST。

如果您使用的是Unix操作系統或在Windows上安裝了curl,則可以使用curl執行POST,並且您應該收到「SUCCESS!」(成功!)。迴應:

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

謝謝!我知道如果我通過curl訪問鏈接。 – bittersour

0

如果您試圖直接從瀏覽器訪問URL,您將訪問GET方法。要訪問其他HTTP方法,您可以使用一些像REST客戶端一樣的瀏覽器插件,例如,我使用RESTClient Firefox插件。在那裏,您可以提供其他選項,如Request Body和其他有用的選項,例如HTTP Headers作爲Content-type:application/json。