Запрос Forge Api PATCH возвращает 415 «неподдерживаемый тип медиа» - PullRequest
0 голосов
/ 12 февраля 2019

Я использую Forge API.Мне нужно выполнить запрос PATCH.Когда я отправляю его с помощью Postman, все в порядке, но когда я создаю запрос с использованием HttpRequestMessage, я получаю ответ - «415 неподдерживаемый тип носителя».По документации API Content-Type я установил «application / vnd.api + json».

Тело запроса в Почтальоне

enter image description here Заголовкизапрос в Почтальоне

структура запроса объекта

JObject jsonApi = new JObject();
            jsonApi.Add("version", "1.0");
            JObject attributes = new JObject();
            attributes.Add("displayName", file.FileName);
            JObject data = new JObject();
            data.Add("type", "items");
            data.Add("id", file.ExternalFileId);
            data.Add("attributes", attributes);

            JObject request = new JObject();
            request.Add("jsonapi", jsonApi);
            request.Add("data", data);

            using (var httpClient = new HttpClient())
            {
                HttpRequestMessage http = new HttpRequestMessage
                {
                    RequestUri = new Uri(url),
                    Method = new HttpMethod("PATCH"),
                    Headers =
                    {
                        { HttpRequestHeader.Authorization.ToString(), "Bearer " + userLastAccessToken },
                        { HttpRequestHeader.Accept.ToString(), "application/vnd.api+json" }
                    }
                };  
                http.Content = new StringContent(request.ToString(), Encoding.UTF8, "application/vnd.api+json");
                HttpResponseMessage responseMessage = await httpClient.SendAsync(http);
            }

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Хорошо, я решил проблему, настроив ContentType таким образом

http.Content = new StringContent(request.ToString(), Encoding.UTF8);
http.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/vnd.api+json");
0 голосов
/ 13 февраля 2019

Попробуйте еще раз с "application/json" или используйте HttpHeaders.TryAddWithoutValidation ("application/vnd.api+json" может не соответствовать внутренней проверке HttpHeaders):

http.Content = new StringContent(request.ToString(), Encoding.UTF8, "application/json");

Или:

http.Content = new StringContent(request.ToString(), Encoding.UTF8);
http.Headers.TryAddWithoutValidation("Content-Type", "application/vnd.api+json");
...