首页 文章

如何使用URL参数进行GET API请求?

提问于
浏览
0
Client client = ClientBuilder.newClient();
urlApi="https://localhost:123/demo/api/v1/rows/search?";
WebTarget webTarget = client.target(urlApi);
for (Map.Entry<String, String> entry : queryParams.entrySet()) {
    webTarget.queryParam(entry.getKey(), entry.getValue());
}
webTarget.queryParam("searchConditions",webTarget.queryParam("mobileNo","+9999999999"));

Invocation.Builder builder = webTarget.request();

builder.header("id", "ABC");
String asB64 = Base64.getEncoder().encodeToString("ABC:PWD".getBytes("utf-8"));
logger.debug("Calling  API "+urlApi);
builder.header("Authorization", "Basic "+asB64);
builder.header("Content-type", MediaType.APPLICATION_JSON);     
response = builder.get();
responseData = response.readEntity(String.class);
System.out.println(responseData);

我正在尝试使用searchCondition作为Key获取GET请求并将值作为 {mobileNo="+919999999999"} ,我无法使其工作 .

除此之外,我如何打印请求“ Headers ”和“查询参数”?先感谢您

1 回答

  • 0

    我认为你需要对值输入进行编码,如下所示:

    webTarget.queryParam("searchCondition", URLEncoder.encode("{mobileNo=\"+919999999999\"}", StandardCharsets.UTF_8.toString()));
    

    UDPATE:Spring的其余客户端示例:

    @Test
    public void testStack() throws Exception {
        RestTemplate rest = new RestTemplate();
        String fooResourceUrl="http://localhost:8080/usersParam?";
        RestTemplate restTemplate = new RestTemplate();
        String parameter = "{mobileNo=\"+919999999999\"}";
    
        ResponseEntity<String> response = restTemplate.getForEntity(fooResourceUrl + "parameter=" + URLEncoder.encode(parameter, StandardCharsets.UTF_8.toString() ), String.class);
        assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
    }
    

    这将是休息服务:

    @RequestMapping(method = RequestMethod.GET, value="/usersParam")
        public User getUsersInfo(@RequestParam String parameter) throws UnsupportedEncodingException {
             System.out.println(URLDecoder.decode(parameter, StandardCharsets.UTF_8.toString() ));
            return null;
        }
    

相关问题