python - 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=False
在requests
代码中是关键,有人建议在请求之前使用 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=False
在requests
通话中吗?
解决方案
您显示的错误消息实际上是服务器的响应。Is 与 SSL 证书无关,因此您根本不需要禁用该检查。
问题是 in 参数的add_headers
名称.headers
不是headers
. 你只需要做
GET(url = url, add_headers(.headers = headers)
推荐阅读
- ios - Someone else is experiencing an infinite "Waiting" with new iOS 11.4.1?
- c# - AOT 设备中的 Json.Net 反序列化是否需要空构造函数?
- php - I want to combine both result into one in Laravel?
- javascript - What is the proper way to declare a javascript standalone library that works in nodejs, browser, commonJS, and AMD?
- flutter - how to make video_player prepare and start to play quicklier?
- bash - 如何通过管道从查找到解压缩到 grep
- angular - Angular Draggable,工具提示和点击
- c# - 非根对象的 JSON 反序列化
- php - 使用 codeigniter 从数据库中检索数据时出错
- actions-on-google - 如何在 Google 上的操作中强制注销关联帐户?