Python API 使用请求的调用抛出最大重试次数并出现 url 错误

Python API call using requests throws Max retries exceeded with url error

我正在尝试使用 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)')))

早些时候,我访问了这个 API 并通过在设置 -> 证书中添加证书以及密码在 Postman 中成功获得了结果。

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,我认为我根本不需要使用密码。

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

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

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

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