首页 > 解决方案 > httr 相当于在请求中验证

问题描述

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=Falserequests代码中是关键,有人建议在请求之前使用 httr 忽略 SSL 证书的方法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=Falserequests通话中吗?

标签: pythonrpython-requestshttr

解决方案


您显示的错误消息实际上是服务器的响应。Is 与 SSL 证书无关,因此您根本不需要禁用该检查。

问题是 in 参数的add_headers名称.headers不是headers. 你只需要做

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

推荐阅读