Как добавить заголовок Content-Type к веб-запросу .Net GET? - PullRequest
0 голосов
/ 14 октября 2018

Мне нужно перевести следующий curl вызов на HttpClient вызов:

curl:

curl -i -X GET "https://dev.wetransfer.com/v2/transfers/{transfer_id}/files/{file_id}/upload-url/{part_number}" \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key" \
  -H "Authorization: Bearer jwt_token"

Моя попытка использования Httpclient:

using (var client = new HttpClient())
{
 client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
 client.DefaultRequestHeaders.Add("x-api-key", My_Correct_ApiKey);
 client.DefaultRequestHeaders.Add("Authorization",My_Correct_Token);
 var xxx = client.GetAsync($"https://dev.wetransfer.com/v2/transfers/{response.Id}/files/{file.Id}/upload-url/{partNumber}").Result;
}

Вам придется поверить мне на слово, что я правильно заполнил параметры.Теперь вызов curl работает как положено и возвращает сообщение Json.Код .Net завершается с ошибкой «Unsupported Media Type».

Любопытно, что в запросе нет сериализованного Json-контента: вся необходимая информация упакована в Request Uri.(И, насколько я понимаю, HttpClient не поддерживает контент по вызовам GET.)

Куда я иду не так?

1 Ответ

0 голосов
/ 14 октября 2018

Ответ можно найти здесь .

. По сути, .Net не позволяет добавлять заголовок Content-Type к вызовам GET, поскольку вызовы GET в .Net не поддерживаютСодержание!Ссылка относится к хаку, который снимает это ограничение для заголовка Content-Type.

...