gpt4 book ai didi

python - Kivy UrlRequest 不传递数据

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:02 27 4
gpt4 key购买 nike

我正在用 flask sqlalchemy 和 marshmallow 编写一个 flask 后端,它返回 json 和 kivy 作为前端。我正在尝试使用 kivy urlrequest 登录我的 flask api,但没有传递任何数据。即使我传递了有效数据,我的 flask api 仍出现错误(“未提供输入数据”)。

from kivy.network.urlrequest import UrlRequest
import urllib
import json

def success(req, result):
print('success')

def fail(req, result):
print('fail')

def error(req, result):
print('error')

def progress(req, result, chunk):
print('loading')

values = {'email':'wilson@gmail.com', 'pwdhash':'wilson'}
params = urllib.urlencode(values)
headers = {'Content-type': 'application/x-www-form-urlencoded',
'Accept': 'text/plain'}

req = UrlRequest('http://127.0.0.1:5000/login', on_success=success, on_failure=fail, on_error=error, on_progress=progress, req_body=params, req_headers=headers)
req.wait()
print(req.result)

请问如何解决这个问题?

最佳答案

然后回答我的问题

我的 API 只接受 json 数据,我从来没有只传递纯文本。为了解决这个问题,我调用了 json.dumps 将数据转换为 json,并将内容类型从 application/x-www-form-urlencoded 更改为 application/json

下面是固定的代码:

from kivy.network.urlrequest import UrlRequest
import urllib
import json

def success(req, result):
print('success')

def fail(req, result):
print('fail')

def error(req, result):
print('error')

def progress(req, result, chunk):
print('loading')

values = {'email':'wilson@gmail.com', 'pwdhash':'wilson'}
# converted data to json type
params = json.dumps(values)

# changed Content-type from application/x-www-form-urlencoded to application/json
headers = {'Content-type': 'application/json',
'Accept': 'text/plain'}

req = UrlRequest('http://127.0.0.1:5000/login', on_success=success, on_failure=fail, on_error=error, on_progress=progress, req_body=params, req_headers=headers)
req.wait()
print(req.result)

关于python - Kivy UrlRequest 不传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44143573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com