我的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请求,所以我没有在这里指定
编辑:服务器的代码与我的问题有点无关,所以我删除了它
发布于 2017-12-19 13:20:52
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)发布于 2017-12-19 13:21:26
req_body是一个字符串参数,可能会有点混乱,因为req_headers是个垃圾。您可以使用:
req_body=json.dumps({"search_text": search_text,"num_results": 1})https://stackoverflow.com/questions/47886673
复制相似问题