我正在尝试向Api Rest提出请求,但我总是得到404,但是如果尝试在浏览器中复制queryUrl或者postMan它可以正常工作。
restTemplate.getForObject(queryUrl, entity ,Integer.class);
我也试过这个:
HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON); HttpEntity entity = new HttpEntity(httpHeaders); log.debug("request headers: " + entity.getHeaders()); ResponseEntity response = restTemplate.exchange(queryUrl, HttpMethod.GET, entity, String.class);
但没有任何改变。 任何人都可以帮助我吗?
答案 0 :(得分:0)
你是正确的Barath使用是正确的。问题是UriComponentBuilder在URL的en中包含一个空格。
我修剪了它。
String queryUrl = UriComponentsBuilder.fromUriString(HOST) .path(PATH) .buildAndExpand(param) .toUriString().trim();
答案 1 :(得分:0)
这花了我一些时间来弄清楚,所以我会在这里留下一点笔记,希望有一天能对某人有所帮助。 使用ResTemplate.getForEntity(URL,Type)进行获取请求时,我一直收到404。该网址可以在Postman的Chrome浏览器中使用,但不能在我的代码中使用。 最终是因为我的URL中有一个unsafe character,确切的说是%,因为我的URL中有空格,所以URL而不是空格中有%20。 Postman和Chrome可以处理此问题,但不能处理我的代码。一旦我用实际空间替换了不安全的字符,一切都很好。
希望它也对您有用。
答案 2 :(得分:0)
当你的 url 包含 "%" 时,你应该使用 restTemplate.getForObject(new URI(url),xx.class),它对我有用。