2
我想发送一个从client.py创建的python字典到我的webservice,让webservice对数据做些什么,然后返回一个布尔值给client.py。这是代码我到目前为止对服务器和客户端:如何从烧瓶发送和接收数据?
服务器端(里面webservice.py):
from flask import Flask
from flask import request
import json
app = Flask(__name__)
@app.route('/determine_escalation',methods = ['POST'])
def determine_escalation():
jsondata = request.form['jsondata']
data = json.loads(jsondata)
#stuff happens here that involves data to obtain a result
result = {'escalate':'True'}
return json.dumps(result)
if __name__ == '__main__':
app.run(debug=True)
客户端(内client.py):
import sys
import json
import requests
conv = [{'input': 'hi', 'topic': 'Greeting'}]
s = json.dumps(conv)
res = requests.post("http://127.0.0.1:5000/determine_escalation",data=s)
print res.text
但是,当我打印出res.text,我得到这个:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>
我在做什么错,我该如何解决这个问题?新的Flask和JSON的东西,所以任何帮助表示赞赏。
要使其完成,您还可以将.json()附加到request.post(...)以直接解析json。在determine_escalation()中,当结果字典包含布尔值True而不是字符串'True'时,所有内容都应按预期工作;) – MarcelK
非常感谢,Neil!对于那些可能会觉得这很有用的用户:通过执行sudo pip安装请求 - 升级来升级您的请求模块。否则,请求将不接受json参数.post – ilikecats
自[请求2.4.2](http://docs.python-requests.org/en/master/community/updates/#id16)开始支持json参数, – MarcelK