Python请求POST不工作
我正在使用python请求模块来调用API。 在我把代码推到AWS之前,一切都很正常。即使在AWS上,如果我在开发服务器上工作,它也能工作,例如,Python请求POST不工作,python,django,amazon-web-services,python-requests,Python,Django,Amazon Web Services,Python Requests,我正在使用python请求模块来调用API。 在我把代码推到AWS之前,一切都很正常。即使在AWS上,如果我在开发服务器上工作,它也能工作,例如,ec2.####.amazon.com:8000 这是我的密码: r = requests.post(api_url, data = {"var 1":"value", "var 2":"value"}) 我的API url不允许GET方法,因此作为响应,我得到了GET方法不允许的错误,这意味着请求。post被理解为GET 你知道这里出了什么问题吗。
ec2.####.amazon.com:8000
这是我的密码:
r = requests.post(api_url, data = {"var 1":"value", "var 2":"value"})
我的API url不允许GET
方法,因此作为响应,我得到了GET
方法不允许的错误,这意味着请求。post
被理解为GET
你知道这里出了什么问题吗。实际上问题是由于SSL造成的,如果你的服务器使用的是
https
方法,那么你需要在请求中添加以下行。post
r = requests.post(api_url, data = {"var 1":"value", "var 2":"value"}, verify=True)
还要确保您的api_url包括https
而不是http
我已经为此编写了一个小函数
def get_base_url(request):
host = get_host(request)
if request.is_secure():
return '{0}{1}/{2}'.format('https://', host, 'url')
else:
return '{0}{1}/{2}'.format('http://', host, 'url')
您是否尝试过在没有端口8000(django的生产环境模式)的情况下访问项目的其余部分,也可以尝试对您的请求进行注释。方法检查并查看对API的请求是否有效。干杯@JatinBansal是的,它在没有8000的情况下工作,只有post发出错误get正常工作。你可以尝试任何REST客户端来测试你的post请求,它们有很多,比如Google Chrome的高级REST客户端。另外,请在出现错误时发布一些django调试信息(将debug设置为True)。在本地主机上,您的代码运行正常吗?获取并发布。@JatinBansal是的,我自己已经发布了答案