带有postman的GET请求正在工作,但它不适用于python(HTTPSConnectionPool)

2024-10-03 19:32:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从一个API中获取JSON,然后可以显示在一个用django构建的网站上,该API是用rest_框架制作的。我试过两个请求和http.客户端但我也有同样的错误:

HTTPSConnectionPool(host='webpageUrl'port=443):超过了url:/api/捐赠的最大重试次数(由ConnectTimeoutError(

我尝试过在Postman中调试GET请求,但当我使用请求库文档中提供的示例或使用Postman中生成的代码片段时,我得到了上述错误。此外,我以前有基本身份验证,我认为这是问题的根源,因此我关闭了身份验证,但它不起作用。在

这是我当前正在尝试的代码:

import requests

def available_donations(request):

    assert isinstance(request,HttpRequest)
    response = requests.get("webpageUrl/api/donations", headers={'Content-Type':'application/json'}, timeout=5)

    return render(
        request,
        'app/availableDonations.html', {'donation':response},
        {
            'title':'Overview of available donations'

            })

我期望得到一个关于网页呈现的错误,但是从我从不同的stackoverflow问题中可以看出,这个错误意味着它找不到网页。在

提前谢谢!在

编辑1:

我试着在我的个人电脑上运行邮递员的代码片段。我认为问题是它不能用我使用的方法向API(位于同一服务器上)发出HTTP请求。此外,我试着用这个方法运行虚拟的不同的虚拟API。在


Tags: 方法代码身份验证apijson网页responserequest
2条回答

我发现我使用的方法对内部HTTPS请求无效。我使用ifconfig查看本地ip地址,并使用它代替主机,并将ip地址放在ALLOWED\u HOSTS in设置.py. 此外,我使用verify=False禁用了SSL验证

def getDonations():

    url = "https://172.19.10.5/api/donations"
    payload = ""
    headers = {
    'cache-control': "no-cache",
    }

    response = requests.request("GET", url, data=payload, headers=headers, timeout=5, verify=False)
    print(response.text)
    return response.text

尝试验证会话

session = requests.Session()
session.verify = True

session.get("webpageUrl/api/donations", headers={'Content-Type':'application/json'}, timeout=5, verify=True)

相关问题 更多 >