1
我的客戶面臨的問題與新澤西州的查詢參數「>」字,我已經通過一些日期過濾器作爲參數,它包含「=>」和澤西抱怨:如何強制球衣接受
Caused by: java.lang.IllegalArgumentException: Path segment is null
at com.sun.jersey.api.uri.UriBuilderImpl.appendPath(UriBuilderImpl.java:547)
查詢本身是如下:
CustomData dat = getWebResource()
.path(path)
.queryParam("display","full")
.queryParam("date","1")
.queryParam("filter[date_upd]",">[2016-01-08 10:32:00]")
.queryParam("filter[valid]","1")
.type(MediaType.APPLICATION_XML).get(CustomData.class);
一些嘗試後我理解,「>」是問題的原因(也日期空間被錯誤編碼)。如果我刪除它澤西是好的,但Web服務不起作用。有沒有特殊的方法來傳遞具有「=>」而不是「=」的參數? 當我直接在瀏覽器試試URL它的工作原理:
http://www.xxxx.com/api/orders/?display=full&date=1&filter[date_upd]=>[2016-01-08%2010:32:00]&filter[valid]=1
,如果我建立的網址與UriBuilder這樣:
uri = UriBuilder.fromPath("http://www.xxxx.com/api/"+Order.URLORDER)
.queryParam("display","full")
.queryParam("date","1")
.queryParam("filter[date_upd]",">[2016-01-08 10:32:00]")
.queryParam("filter[valid]","1").build();
System.out.println(uri.toASCIIString());
//http://www.xxxx.com/api/orders/?display=full&date=1&filter%5Bdate_upd%5D=%3E%5B2016-01-08+10:32:00%5D&filter%5Bvalid%5D=1
,並嘗試在它的作品太瀏覽器,但如果我使用查詢中的URI然後再次查詢失敗。問題應該在別的地方。
URI uri = UriBuilder.fromPath("http://www.xxxx.com/api/"+Order.URLORDER)
.queryParam("display","full")
.queryParam("date","1")
.queryParam("filter[date_upd]",">[2016-01-08 10:32:00]")
.queryParam("filter[valid]","1").build();
CustomData dat = getWebResource().uri(uri).type(MediaType.APPLICATION_XML).get(CustomData.class);
任何想法?
也試過
.queryParam("filter[date_upd]",URLEncoder.encode(">[2016-01-08 10:32:00]", "UTF-8"))
和
.queryParam("filter[date_upd]",URLEncoder.encode("%3E[2016-01-08 10:32:00]", "UTF-8"))
用同「路徑段爲空」的錯誤