Java 带有路径变量的RestTemplate GET方法
我正在尝试使用rest模板进行rest调用。我有两个头参数和一个路径变量要为API调用设置。下面是我的实现。但是我收到了HttpServerErrorException:500 null。我是否以正确的方式设置path变量 目标API:drs/v1/{caseId}Java 带有路径变量的RestTemplate GET方法,java,spring,spring-boot,httpclient,resttemplate,Java,Spring,Spring Boot,Httpclient,Resttemplate,我正在尝试使用rest模板进行rest调用。我有两个头参数和一个路径变量要为API调用设置。下面是我的实现。但是我收到了HttpServerErrorException:500 null。我是否以正确的方式设置path变量 目标API:drs/v1/{caseId} String url = configProperties.getCaseCreateUrl(); if(!StringUtils.isEmpty(url)){
String url = configProperties.getCaseCreateUrl();
if(!StringUtils.isEmpty(url)){
url = url.replace(ApplicationConstants.DOMAIN_NAME,currentUser.domainUrl());
url = url+ caseId;
}
HttpHeaders headers = new HttpHeaders();
headers.set(ApplicationConstants.PS_TOKEN_HEADER, currentUser.getToken());
headers.set(ApplicationConstants.WORGROUP_HEADER, currentUser.getWorkgroupId());
headers.set(ApplicationConstants.DOMAIN_HEADER, currentUser.getDomainId());
headers.set(HttpHeaders.CONTENT_TYPE, MediaType.ALL_VALUE);
HttpsTrustManager.allowAllSSL();
RestTemplate restTemplate = new RestTemplate();
HttpEntity<Map<String, String>> requestEntity = new HttpEntity(null, headers);
ResponseEntity<CaseDetailsDTO> response = restTemplate.exchange(url, HttpMethod.GET, requestEntity, CaseDetailsDTO.class);
String url=configProperties.getCaseCreateUrl();
如果(!StringUtils.isEmpty(url)){
url=url.replace(ApplicationConstants.DOMAIN_NAME,currentUser.domainUrl());
url=url+caseId;
}
HttpHeaders=新的HttpHeaders();
set(ApplicationConstants.PS_TOKEN_头,currentUser.getToken());
headers.set(ApplicationConstants.WORGROUP_头,currentUser.getWorkgroupId());
headers.set(ApplicationConstants.DOMAIN_头,currentUser.getDomainId());
headers.set(HttpHeaders.CONTENT\u TYPE、MediaType.ALL\u值);
HttpsTrustManager.allowAllSSL();
RestTemplate RestTemplate=新RestTemplate();
HttpEntity requestEntity=新的HttpEntity(空,标题);
ResponseEntity response=restemplate.exchange(url、HttpMethod.GET、requestEntity、CaseDetailsDTO.class);
我提供了一个RestTemplate GET方法的代码片段和路径变量示例
public ResponseEntity<List<String>> getNames(long id) {
final String url = "https://some/{id}/name";
//with cookies
ResponseEntity<String> cookie = getCookies();
String set_cookie = cookie.getHeaders().getFirst(HttpHeaders.SET_COOKIE);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("Cookie", set_cookie);
HttpEntity request = new HttpEntity(headers);
ResponseEntity<List<String>> response = restTemplate.exchange(url, HttpMethod.GET, request,new ParameterizedTypeReference<List<String>>(){},id);
return response;
}
public ResponseEntity getNames(长id){
最终字符串url=”https://some/{id}/name”;
//用饼干
ResponseEntity cookie=getCookies();
字符串set\u cookie=cookie.getHeaders().getFirst(HttpHeaders.set\u cookie);
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
添加(“Cookie”,set_Cookie);
HttpEntity请求=新的HttpEntity(标头);
ResponseEntity response=restemplate.exchange(url,HttpMethod.GET,请求,新参数化类型引用(){},id);
返回响应;
}
url=url+caseId;应该是url=url+“/”+caseId;当上游服务有内部错误时,抛出500。可能您需要检查您的上游服务logsurl已经跟在“/”后面,所以我不必添加。除了500 null之外,我没有看到任何内部错误。知道如何启用上游日志吗?500表示服务器错误。在担心您的请求之前,先担心服务器。您可以发布日志吗?这将有助于缩小问题的范围。