在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证书(如建议的here所示)。这很好用,但是我不能用httr以下面的方式重现它:
library(httr)
url <- url
headers <- c('API-key' = 'xxxxxxxxxxxxxxxx',
'Content-type' = 'application/json',
'Accept' = 'application/json'
))
GET(url = url, add_headers(headers = headers)现在,我相信requests代码中的verify=False是这里的关键,someone suggested使用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] 401httr::set_config(httr::config(ssl_verifypeer=0L, ssl_verifyhost=0L))等同于requests调用中的verify=False吗?
发布于 2019-05-21 21:35:25
您显示的错误消息实际上是来自服务器的响应。它与SSL证书无关,所以您根本不需要禁用该检查。
问题是add_headers中参数的名称是.headers,而不是headers。你只需要做
GET(url = url, add_headers(.headers = headers)https://stackoverflow.com/questions/56222109
复制相似问题