вызывая API-интерфейс Salesforce для выполнения 'update CurrencyType', иногда это происходит успешно, а иногда не удается и выдает ошибочный запрос 400 - PullRequest
0 голосов
/ 05 декабря 2018

вызывая 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

}

Спасибо;

...