Salesforce Rest API修补程序操作 - 错误请求

时间:2018-06-14 15:11:20

标签: c# rest salesforce http-patch

我试图在我们组织的Salesforce API上调用PATCH操作。 网址是正确的(格式 - https://xxxx.salesforce.com/services/data/v43.0/sobjects/Classification__c/objectid?_HttpMethod=PATCH),JSON内容也是如此,尽管您可能无法从下面的代码中获取该内容。

    public async Task PatchSalesforceObjectAsync(string objectToPost, string objectid, HttpContent content)
    {
        SetupHttpClient();

        using (_response = await _httpClient.PostAsync($"{_sfObjectPartialURL}{objectToPost}{objectid}?_HttpMethod=PATCH", content))
        {
            if (_response.IsSuccessStatusCode)
            {
                var x = _response.Content;
            }
        }
    }

    void SetupHttpClient()
    {
        _httpClient = new HttpClient();
        _httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", _sfAccesstoken);
        _httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
        _httpClient.BaseAddress = _baseURI;
    }

响应 - StatusCode:400,ReasonPhrase:错误请求

我已经通过POSTMAN提出了完全相同的请求并且它很顺利,因此我猜测问题在于我如何在.Net框架中进行调用。

我还尝试使用HttpRequestMessage对象,然后在HttpClient对象上调用SendAsync,但这会导致相同的结果。

    HttpRequestMessage message = new HttpRequestMessage()
        {
            Method = new HttpMethod("PATCH"),
            RequestUri = new Uri(_baseURI, $"{_sfObjectPartialURL}{objectToPost}{objectid}"),
            Content = content,
        };
        using (_response = await _httpClient.SendAsync(message))
        {

1 个答案:

答案 0 :(得分:0)

Rookie Mistake - Patch中有一个字段我不允许更新,因为我正在处理相同的对象并根据对象是否已经存在而在POST和PATCH之间切换我不知道这个字段级限制。