2014-12-02 138 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 

这基本上意味着: