我的API工作正常,当我使用Postman测试时,我看到200
状态。但是,我正在尝试使用Kivy应用程序访问它,但是在等待或退出应用程序后,我看到来自服务器的400
响应。顺便说一下,当使用Postman进行测试时,我将标题指定为Content-Type: application/json
,并在正文中我看到我的参数
{
"search_text": "Hello",
"num_results": 1
}
作为raw
数据发送。
我的代码
def search(self, search_text):
header = {'Content-Type':'application/json'}
req = UrlRequest('http://127.0.0.1:5000/search',req_body={"search_text": search_text,"num_results": 1},on_success=Test.got_json,req_headers=header)
print("Search method called")
@staticmethod
def got_json(req,result):
print(result)
Kivy docs表示您不必指定方法,因为这会发送POST
请求,所以我没有在此处指定
修改:服务器代码与我的问题无关,所以我删除了它
答案 0 :(得分:2)
UrlRequest
应作为请求正文传递str
个对象。您可以通过转储将请求字典序列化为字符串对象。将此转储字典作为请求正文传递给UrlRequest
。
import json
req_body=json.dumps({'search_text': search_text, 'num_results': 1})
req = UrlRequest(
'http://127.0.0.1:5000/search',
req_body=req_body,
on_success=Test.got_json,
req_headers=header)
答案 1 :(得分:1)
req_body是一个字符串参数,可能有点令人困惑,因为req_headers是一个字典。您可以使用:
req_body=json.dumps({"search_text": search_text,"num_results": 1})