0
Connected AppsとSpring RestTemplateクライアントを使用してSalesforce.comオブジェクトのクエリに対する基本APIを作成する際に問題が発生しました。 POST操作を使用する初期認証ステップは正常に動作しており、SalesforceインスタンスURLと必要なアクセストークンを返します。次のGET操作はエラー400で失敗します。URLとアクセストークンの両方が有効なJSON応答を返すChrome POSTMANプラグインによって検証されました。Salesforce.comのConnected AppsでSpring RestTemplateとGETのリクエストが不正400
伝統的な実装はうまく機能せず、 "setAccept"は後でmediatypeの解析を解決しようとする試みであることにも言及する価値があります。
エラーのコードの下に:
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);
ソリューションは、操作をGET春RestTemplateで400バグを修正した以下の通りです:
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);