Все еще ломая голову после нескольких звонков, чтобы получить токен и продукт, опубликовать продукт было практически невозможно с помощью restTemplate, даже несмотря на то, что это удалось с помощью клиента Postman REST.
public AddProductResponse createProduct(@NonNull AuthenticationTokenResponse authenticationTokenResponse)
{
String url = authenticationTokenResponse.getInstance_url() + "/services/data/v39.0/sobjects/Product2";
HttpHeaders headers = new HttpHeaders();
//headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.set("Authorization", "Bearer " + authenticationTokenResponse.getAccess_token());
headers.setContentType(MediaType.APPLICATION_JSON);
//headers.add("Authorization", "Bearer " + authenticationTokenResponse.getAccess_token());
MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
requestBody.add("Name", "Product Name");
requestBody.add("product_Reference__c", "SOMERef");
HttpEntity<?> requestEntity = new HttpEntity<>(requestBody, headers);
RestTemplate restTemplate = new RestTemplate();
try
{
ResponseEntity<AddProductResponse> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, AddProductResponse.class);
return response.getBody();
}
catch (Exception e)
{
LOG.debug("Error creating product");
e.printStackTrace();
}
return null;
}
Интересно, почему мой вызов почтальона удалось, но не с Spring RestTemplate. Скриншот POSTMAN.
postman body.
{"Name" : "My New Prod ",
"product_Reference__c": "REFAKINTEST3"}