2017-12-12 6 views
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); 

答えて

0

私は解決策を追加しました上記の報告書。最初の文UriComponentsBuilderの使用を観察し、GETで400の問題を解決しました。

関連する問題