使用Jersey 2.x调用OSIsoft WebAPI设置GET请求参数失败求助
解决JAX-RS WebTarget构造GET请求参数不匹配的问题
我一眼就看出问题所在啦!你要构造的目标请求是search/query?q=name:my_machine,但你的代码逻辑搞错了参数的结构:
- 你的代码用
webTarget.queryParam("name", "my_machine")生成的请求是search/query?name=my_machine,这和API要求的**单个q参数,值为name:my_machine**完全不符,所以API才会提示你必须指定正确的查询参数。
修正后的代码
直接把参数名改成q,值设为完整的name:my_machine字符串就行:
WebTarget webTarget = client.target("https://my_rest/api/search/query"); // 关键修改:参数名是q,值是完整的查询表达式 webTarget = webTarget.queryParam("q", "name:my_machine"); Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON); Response response = invocationBuilder.get();
额外提示
如果之后需要更复杂的查询条件(比如多条件组合),只需要把完整的查询字符串作为q参数的值传入即可,比如:
webTarget = webTarget.queryParam("q", "name:my_machine AND status:running");
这样生成的请求就完全符合API要求的格式啦,应该就能正常返回数据了!
内容的提问来源于stack exchange,提问作者slacky82
相关产品推荐
相关产品推荐

