【问题标题】:Python API call using requests throws Max retries exceeded with url error使用请求的 Python API 调用引发 Max retries exceeded with url 错误
【发布时间】:2021-12-30 16:12:29
【问题描述】:

我正在尝试使用 Python 请求访问 https API。我获得了一个证书和一个密码来访问它。

我来了

HTTPSConnectionPool(host='abc.coom', port=443): Max retries exceeded with url: //AIMWebService//api//Accounts?AppID=xyz&Safe=123&Object=obj  (Caused by SSLError(SSLError(9, '[SSL] PEM lib (_ssl.c:4024)')))

之前,我通过在 Setting->Certificates 中添加证书以及密码短语,在 Postman 中成功访问了此 API 并获得了结果。

import json
import requests

clientCrt = "C:\\abc\\abc-Certs\\cert-TEST.pfx"

#clientKey = "Passphrase"
url = "https://abc.coom/AIMWebService/api/Accounts?AppID=xyz&Safe=123&Object=obj"
certServer = "C:\\Users\\MyName\\Anaconda3\\Lib\\site-packages\\certifi"
headers = {'content-type': 'application/json'}
#r = requests.get(url, verify=False, headers=headers, cert=(clientCrt, clientKey))
r = requests.get(url, verify=False, headers=headers, cert=clientCrt)
#r = requests.get(url, verify=certServer, headers=headers, cert=clientCrt)
#r = requests.get(url, verify=False, headers=headers)
print(r.status_code)
print(r.json())

如您所见,我尝试了多个选项来访问它。通过使用 verify=False,我认为我根本不需要使用密码。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python api ssl python-requests certificate


    【解决方案1】:

    requests 需要具有PEM 格式的证书,您的.pfx 文件是PKCS#12 格式。

    您可以更改证书格式:Converting pfx to pem using openssl

    或者您可以使用此library 为请求添加 PKCS#12 支持。

    【讨论】:

    • 非常感谢。这有帮助
    猜你喜欢
    • 1970-01-01
    • 2022-11-07
    • 2021-02-21
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2020-10-14
    • 2022-06-15
    • 2022-08-13
    相关资源
    最近更新 更多