能够卷曲POST请求但使用请求的Python脚本返回500错误?

时间:2017-02-27 02:06:36

标签: python curl python-requests

我在Django中有一个微服务,它通过POST请求获取邮政编码并返回附近邮政编码的列表。

我知道这项服务有效,因为我可以卷曲它

curl http://172.17.0.6:80/zipcode/ -d "postalcode=97201"

返回

{"postalcodes": ["97201", "97239", "97205", "97204", "97228", "97238", "97207", "97269", "97268", "97240", "97250", "97242"]}

我正在尝试编写一个脚本,它将成为我的其他微服务如何与此服务进行通信的基础,问题是脚本返回500错误而且我无法确定我做错了什么。

python脚本:

import requests
def calculate_postalcodes(postalcode):
    url="http://172.17.0.6:80/zipcode/"
    params ={'postalcode':postalcode}
    data = requests.post(url=url, params=params)
    # output = data.json()
    # zipcodes = output['postalcodes']
    return data.text


postalcodess = calculate_postalcodes('97201')
print postalcodess

django logs

mypostalcode = request.POST['postalcode']
File "/usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py", line 85, in __getitem__
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'postalcode'"

因为我们知道该服务适用于卷曲请求,所以我选择不包含代码片段。我基本上只是试图通过POST请求传递一个邮政编码,方式与我的CURL请求相同。

1 个答案:

答案 0 :(得分:0)

切换
data = requests.post(url=url, params=params)

data = requests.post(url=url, data=params)

解决了这个问题。我的网络服务器不允许通过URL传递参数,这是params的作用(而数据通过http请求传递)