вызывая API-интерфейс Salesforce для выполнения 'update CurrencyType', иногда он завершается успешно, а иногда завершается неудачно и выдает ошибочный запрос 400. И верстак показывает http 200 ok status.
вот код;
@RestResource (urlMapping='/rateupdate/test/*')
global class SampleRESTService {
@HttpPost
global static void doPost(){
RestRequest req = RestContext.request;
Map<String, Object> body = new Map<String, Object>();
String cur = '';
Double rate = 0.00;
String id;
String jsonBody = req.requestBody.toString();
if (!String.isBlank(jsonBody)) {
body = (Map<String, Object>)JSON.deserializeUntyped(jsonBody);
if (body.containsKey('currency')) {
cur = (String)body.get('currency');
CurrencyType ct = [Select id,IsoCode,ConversionRate From CurrencyType where isActive=true And IsoCode=:cur];
system.debug('currencyType====='+ct);
id = ct.Id;
}
if (body.containsKey('rate')) {
rate = (Double)body.get('rate');
}
}
Http h = new Http();
HttpRequest req1 = new HttpRequest();
req1.setEndpoint(URL.getSalesforceBaseUrl().toExternalForm() + '/services/data/v28.0/sobjects/CurrencyType/'+id+'?_HttpMethod=PATCH');
Map<String,double> rateMap =new Map<String,double>();
rateMap.put('ConversionRate',rate);
String body1=JSON.serialize(rateMap);
system.debug('body==='+JSON.serialize(rateMap));
req1.setBody(body1);
req1.setHeader('Authorization', 'OAuth ' + UserInfo.getSessionId());
req1.setHeader('Content-Type', 'application/json');
req1.setMethod('POST');
HttpResponse res = h.send(req1);
system.debug('response====='+res);
}
}
json Я публикую в Salesforce ;;;
{
"currency": "USD",
"rate": 9.00
}
Спасибо;