我正在尝试使用Jersey
学习RESTFul Web服务我已经编写了一些java代码来返回json,以便JIRA搜索项目ID,代码基于Bernd Hort创建的代码(BP206在connect2014上)
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
HTTPBasicAuthFilter authFilter = new HTTPBasicAuthFilter("username", "password");
client.addFilter(authFilter);
WebResource service = client.resource(getBaseURI());
String searchquery = "search?jql=id=" + id + "&maxResults=5000";
System.out.println("Query=" + searchquery);
String json = service.path(searchquery).accept(
MediaType.APPLICATION_JSON).get(String.class);
我已使用Postman测试搜索并将其放入浏览器网址并返回数据。
http://myserver:8080/rest/api/2/search?jql=id=12408&maxResults=5000
当我在我的java代码中尝试它时,我收到以下错误;
com.sun.jersey.api.client.UniformInterfaceException: GET http://myserver:8080/rest/api/2/search%3Fjql=id=12408&maxResults=5000 returned a response status of 404 Not Found
似乎正在改变'?'到搜索不喜欢的'%3f'
答案 0 :(得分:0)
您将该查询指定为路径的一部分,因此它将被转义为:
String json = service.path(searchquery).accept(
MediaType.APPLICATION_JSON).get(String.class);
您想将其设为查询参数:
String json = service.path("search")
.queryParam("jql", "id=" + id)
.queryParam("maxResults", "5000)
.accept(MediaType.APPLICATION_JSON).get(String.class);