httr эквивалент для проверки в запросах - PullRequest
1 голос
/ 20 мая 2019

В python Я использую requests для вызова API (к сожалению, не могу совместно использовать API, поэтому его трудно воспроизвести) следующим образом:

import requests
url = url
headers = {'API-key': 'xxxxxxxxxxxxxxxx',
       'Content-type': 'application/json',
       'Accept': 'application/json'
       }

r = requests.get(url, headers = headers, verify=False)
print(r.text)

Здесь, я думаю, verify=False заставляет запрос игнорировать сертификат SSL (как предложено здесь ). Это прекрасно работает, однако я не могу воспроизвести его с httr следующим образом:

 library(httr)

url <- url
headers <- c('API-key' = 'xxxxxxxxxxxxxxxx',
             'Content-type' = 'application/json',
              'Accept' = 'application/json'
          ))

GET(url = url, add_headers(headers = headers)

Теперь я считаю, что ключом является verify=False в коде requests, кто-то предложил , что способ игнорирования SSL-сертификатов с httr использует set_config() перед запросом:

httr::set_config(httr::config(ssl_verifypeer=0L, ssl_verifyhost=0L))

GET(url = url, add_headers(headers = headers))

Но это не работает.

$message
[1] "Unauthorized"

$http_status_code
[1] 401

Является ли httr::set_config(httr::config(ssl_verifypeer=0L, ssl_verifyhost=0L)) эквивалентом verify=False при requests вызове?

1 Ответ

2 голосов
/ 21 мая 2019

Сообщение об ошибке, которое вы показали, действительно является ответом от сервера. Is не имеет никакого отношения к SSL-сертификату, поэтому вам вообще не нужно отключать эту проверку.

Проблема в том, что имя параметра в add_headers равно .headers, а не headers. Вам просто нужно сделать

GET(url = url, add_headers(.headers = headers)
...