2017-12-12 3 views
0

Connected Apps 및 Spring RestTemplate 클라이언트를 사용하여 Salesforce.com 객체 쿼리에 대한 기본 API를 생성하는 데 문제가 있습니다. POST 작업을 사용하는 초기 인증 단계는 정상적으로 작동하며 필요한 액세스 토큰뿐만 아니라 Salesforce 인스턴스 URL을 반환합니다. 다음 GET 작업이 오류 400과 함께 실패합니다. URL과 액세스 토큰이 모두 유효한 POSON 응답을 반환하는 Chrome POSTMAN 플러그인에 의해 검증되었습니다.Salesforce.com Connected Apps에서 Spring RestTemplate 및 GET에 대한 400 요청이 잘못되었습니다.

기존 구현이 제대로 작동하지 않았으며 "setAccept"가 mediatype의 구문 분석을 해결하기위한 이후 시도 였음을 언급하는 것도 가치가 있습니다. 오류 코드 아래

:

URI targetUrl = UriComponentsBuilder.fromUriString(url).build().toUri(); 

HttpHeaders headers = new HttpHeaders(); 
headers.add("Authorization", "Bearer " + accessToken); 

HttpEntity<String> request = new HttpEntity<String>(headers); 

logger.info("Requesting GET from: " + url); 

ResponseEntity<String> responseBodyForGet = restRetrieveSalesforceData.exchange(targetUrl, 
HttpMethod.GET, request, String.class); 

답변

0

이 난에 솔루션을 추가 한 :이 솔루션은 봄 RestTemplate 작동 GET에서 400 버그를 수정하는 것으로

HttpHeaders headers = new HttpHeaders(); 
headers.setAccept(Collections.singletonList(MediaType.parseMediaType("application/json"))); 
headers.add("User-Agent", USER_AGENT); 
headers.add("Authorization", "Bearer " + accessToken); 

HttpEntity<String> request = new HttpEntity<String>(headers); 

ResponseEntity<String> responseBodyForGet = restRetrieveSalesforceData 
.exchange(url, HttpMethod.GET, request, String.class); 

는 다음과 위에 게시 된 보고서. 첫 번째 문장 인 UriComponentsBuilder를 사용하여 GET에서 400 문제를 해결합니다.

관련 문제