Отправка JSON в службу REST - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь использовать источник данных из Plex облачной ERP-системы с Rest. Я получаю запрещенный код состояния при отправке PUT

HTTP Header

enter image description here

public  static string Put(string url,string Body,PCNModel pcn)
    {
        HttpClient client = new HttpClient();

        int timeOutSec = 90;
        string accept = "application/json";
        string acceptEncoding = "gzip, deflate";
        string contentType = "application/json";
        var credentials = pcn.UserName + ":" + pcn.Password;
        var bytes = Encoding.UTF8.GetBytes(credentials);
        var encodedCredentials = Convert.ToBase64String(bytes);
        var authorizationHeaderValue = encodedCredentials;
        HttpResponseMessage response = new HttpResponseMessage();


        client.Timeout = new TimeSpan(0, 0, timeOutSec);
        //client.DefaultRequestHeaders.Add("Accept", string.Format(accept));
        client.DefaultRequestHeaders.Add("Accept", (accept));

        client.DefaultRequestHeaders.Add("Accept-Encoding", string.Format(acceptEncoding));
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));
        client.DefaultRequestHeaders.Add("Authorization", string.Format("Basic {0}", authorizationHeaderValue));
        HttpContent httpBody = Body;
        httpBody.Headers.ContentType = new MediaTypeHeaderValue(contentType);
        response = client.PutAsync(url, httpBody).Result;
        var error = response.StatusCode.ToString();
        var requestMessage = response.RequestMessage;
        var responseContent = response.Content;
        var responseReasonPhrase = response.ReasonPhrase;
        var responseHeader = response.Headers;     


        MessageBox.Show(error);
        MessageBox.Show(requestMessage.ToString());
        //MessageBox.Show(responseContent.ToString());
        //MessageBox.Show(responseReasonPhrase.ToString());
        //MessageBox.Show(responseHeader.ToString());

         var content = response.Content.ReadAsStringAsync().Result;
        return content;
    }

Я не уверен, где он отскакивает от меня.

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Оказывается, что предоставленные мне учетные данные были неверными. Что не позволило мне обработать вызовы веб-служб к конечной точке.

0 голосов
/ 06 марта 2019

Вам нужно проанализировать тело до json перед вызовом PutAsync. Вот небольшой кодовый код

client.DefaultRequestHeaders.Add("authKey", authKey);
var json = JsonConvert.SerializeObject(product, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PutAsync(url, content);
if (response.IsSuccessStatusCode)
{

}
else
{
    var result = response.Content.ReadAsStringAsync().Result;
    throw new Exception("Error Occured in Update Product" + result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...