2014-12-02 150 views
3

聲明:我不是一個J2EE開發人員。但是這個代碼可以在其他地方工作,但是這個API會變得瘋狂。爲什麼我的QueryParam返回null

代碼

@GET 
    @Path("GetCloseby") 
    @Consumes({ MediaType.TEXT_PLAIN }) 
    @Produces({ MediaType.APPLICATION_JSON }) 
    public CServiceCenters getList(@QueryParam("latitude") Double latitude, 
      @QueryParam("longitude") Double longitude) { 
      log.info("GetCloseby searching for lat " 
        + latitude + " lng " + longitude); 

GetCloseby尋找緯度17.63 LNG空

從客戶端調用

捲曲的http://:8080/MYWAR/MYAPI/GetCloseby?緯度= 17.63 &經度= 73.9

+0

對於我來說,在Windows上使用cURL,我會從Windows獲得500個狀態和「經度不知道作爲命令」。我必須將URL包含在引號中才能正常工作。雖然在瀏覽器上工作正常。不是一個很大的cURL用戶,所以我不能說爲什麼會發生這種情況 – 2014-12-02 10:21:55

+0

對不起,我不明白 – Siddharth 2014-12-02 11:35:25

+0

我不得不將URL包裹在引號中,即'curl「http:/ ....」'。如果我沒有,我會得到一個500狀態響應,並且Windows shell會給我一條消息「經度不是已知的命令」,這意味着'&'之後的URL部分沒有經過,而Windows shell試圖在cURL請求經過 – 2014-12-02 11:37:34

回答

2

聲明:我不是一個很大的cURL用戶,所以我不知道所有的細微差別,以及爲什麼這個工作。這可能是一個殼問題。

爲了得到它工作,我不得不加引號"周圍的網址

curl "http://:8080/MYWAR/MYAPI/GetCloseby?latitude=17.63&longitude=73.9"

注:我也試圖逃脫&(不帶引號),但我會得到一個URISyntaxExeption與服務器。

1

&字符需要轉義,它在shell中有特殊含義。你可以這樣做:"abc&def"或者像這樣:abc\&def。如果您嘗試使用後者:此查詢中可能還有其他特殊字符,因此要麼使用第一個變體,要麼必須將所有可被shell識別爲特殊字符的字符都轉義。

嘗試:

echo abc&def 

這基本上意味着: