Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求POST不工作_Python_Django_Amazon Web Services_Python Requests - Fatal编程技术网

Python请求POST不工作

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 你知道这里出了什么问题吗。

我正在使用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


你知道这里出了什么问题吗。

实际上问题是由于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是的,我自己已经发布了答案