使用UrlRequest连接Flask后端与Kivy应用时遇到问题
我现在在做一个项目,里面有一个Flask后端和一个Kivy应用。我想让这两个部分能互相通信,打算用Kivy的UrlRequest来实现。但是,看起来我的Flask应用没有按预期接收到来自UrlRequest的数据。
这里有几个关键点:
- 我已经设置好了Flask后端来处理请求。
- Kivy应用向Flask的某个接口发起了UrlRequest。
- 尽管URL配置是正确的,但Flask应用似乎拒绝了通过UrlRequest发送的数据。
如果有人能提供一些建议或者解决这个问题的思路,我将非常感激!
This is my back end endpoint:
@recipes_blueprint.route('/ask_mobile', methods=['POST'])
def ask_recipe_mobile():
content = request.json['content']
print(content)
recipe = recipe_request_mobile(content)
return jsonify({
'data': recipe,
'status': 200,
'message': 'Recipe created successfully'
}), 200
我的Kivy应用是:
def load_content(self, query):
params = urlencode({'content': query})
headers = {
'Content-Type': 'application/json'
}
req = UrlRequest('http://127.0.0.1:5000/recipes/ask_mobile',
req_body=params, req_headers=headers, on_error=handle_error)
print(req.req_body)
我在后端遇到了400错误
1 个回答
0
你发送的数据是经过编码的,但在服务器那边却希望接收到的是json格式的数据。因此,服务器在尝试解析这些数据时就会出错。
下面的例子展示了如何以json格式发送数据。
import json
# ...
def load_content(self, query):
req_headers = {
'Content-Type': 'application/json'
}
req_body=json.dumps({'content': query})
req = UrlRequest('http://127.0.0.1:5000/reciepes/ask_mobile',
req_headers=req_headers,
req_body=req_body,
on_success=self.handle_success)
def handle_success(self, request, result):
print(result)