Реплицировать запрос POSTMAN GET в C # / VB.net с авторизацией

#c# #vb.net #httpclient #request-headers

#c# #vb.net #httpclient #запрос-заголовки

Вопрос:

Я здесь уже 2 дня, что сводит меня с ума.

Все, что я хочу сделать, это вызвать веб-сервис по адресу:

https://use-land-property-data.service.gov.uk/api/v1/datasets

Который возвращает некоторый объект JSON.

Для этого требуется, чтобы заголовок «Authorization» был установлен с помощью ключа API, который у меня есть.

Я пробовал это в POSTMAN, и это работает.

введите описание изображения здесь

Однако попытка заставить работать версию Webclient или Httpclient в настоящее время мне недоступна. Я перепробовал бесчисленное количество примеров здесь, на SO. Ни один из них не возвращает те же ответы, что и POSTMAN. Все возвращают «Запрос отклонен»

например

  Using client = New HttpClient()

            client.DefaultRequestHeaders.Add("Authorization", "MYKEY")
            Dim response = Await client.GetStringAsync("https://use-land-property-data.service.gov.uk/api/v1/datasets")
           
            Return response
        End Using
 

что эквивалентно httpclient для репликации заголовка postman Authorization ?

Комментарии:

1. Почему вы используете WebClient in 2021?

2. Кроме того, почему вы используете VB.NET ?

3. Ваш код выглядит нормально как есть, поэтому в вашем сообщении отсутствует что- то еще (т. Е. Код, Который вы не опубликовали).

4. Я только что сам попытался получить доступ к веб-службе реестра землепользования и столкнулся с теми же проблемами. По-видимому, веб-сервис находится в бета-версии, и я уже столкнулся с несколькими ошибками (например, он игнорирует Accept заголовок и всегда возвращает text/html ответы). Я предлагаю вам связаться с ними напрямую и попросить их все исправить.

5. HttpClient отправляет еще несколько необязательных заголовков, вы можете попробовать отключить их и т. Expect 100-continue Д. Я попробовал ваш запрос, но я не получаю ключ API без кредитной карты… Если у вас есть ключ API для меня, я могу попытаться помочь вам.

Ответ №1:

Попробуйте:

 httpClient.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Bearer", "Your Key")