我在Flask的RESTful API中编写了POST方法,并成功地使用命令行HTTP客户端HTTPie将数据添加到服务器。但是当我在Android上尝试时,出现了一个错误。以下是客户端的代码:
@app.route('/factories', methods=['POST'])
def create_factory():
if not request.json or not 'fac_name' in request.json:
abort(404)
factory = {
'id': factories[-1]['id'] + 1,
'fac_name': request.json['fac_name'],
'lat': request.json['lat'],
'lng': request.json['lng']
}
factories.append(factory)
return jsonify({'factory': factory}), 201
烧瓶的误差:
192.168.0.101-[13/May/2019 03:37:44]“POST/Factories HTTP/1.1”500-回溯(最近的调用):
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第2295行,在wsgi_app response=self.handle_exception(e)中
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1741行,在handle_exception reraise(exc_type,exc_value,tb)中
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask_compat.py”,第35行,在reraise中提高值
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第2292行,位于wsgi_app response=self.full_dispatch_request()中
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1815行,位于full_dispatch_request rv=self.handle_user_exception(e)中
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1718行,在handle_user_exception中(exc_type,exc_value,tb)
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask_compat.py”,第35行,在reraise中提高值
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1813行,位于full_dispatch_request rv=self.dispatch_request()中
文件“C:\users\steve\pycharmprojects\test\venv\lib\site-packages\flask\app.py”,第1799行,在dispatch_request中返回self.view_functionsrule.endpoint
'fac_name': request.json['fac_name'],
更新:我将If not
行更改为If not request.json:abort(401)
,现在是401 error。我也试过使用Postman,这是相同类型的错误,所以我认为这与Android代码无关,我从这里删除了Android代码。
您期待一个JSON请求
if not request.json or not 'fac_name' in request.json:
但你在发送表单数据。
然后必须在请求正文中添加一个有效的json。
与/user/login?_format=json完全相同的POST在Postman中不起作用(错误403禁止),但在curl中使用相同的参数可以正常工作。 这个Curl的工作原理是:Curl--header“content-type:application/json”--request POST--data“{”name“:”bobo“,”pass“:”xxx“}”http://[domain]
我是android新手,我能够在kotlin中为我的应用程序设置firebase。如果我在Nexus 5X API 27 emulator中运行该应用程序,我就能够获取数据库,但当我在实际设备三星S5(Google play Services V 12.5.29,android V 5.0)中运行该应用程序时,我无法获得addValueEventListener回调。 Gradle文件: 我知道这
我试图制作一个跨平台的JavaFX应用程序,它在Windows和OSX机器上工作得很好,但在Linux上不行。 jar是在Intellij思想中使用基本的JavaFX配置构建的。 有人帮忙吗?
下面是连接到HTTPS/SSL的我的代码 那我能做什么呢?请帮我找到正确的代码...
我能够登录我的本地(和远程服务器)与以下curl(我用Postman生成)...我可以登录成功使用另一个API客户端(Rest)与我试图在Postman中使用相同的参数/头/体。我已经关闭了SSL证书验证和发送邮递员令牌头设置(每其他堆栈溢出答案)... 卷曲: Curl-X POST\http://localhost:8080/api/user/login\-H'接受:应用程序/json'\-H
请求在Postman/Java中失败,但在RESTClient中工作…以下是请求,并附上错误的截图。 这是一个POST请求 {“username”:“test”,“password”:“test”,“simulate_user”:“test”,“sourcetabledesc”:“testlist100”,“联系人”:[{“组织”:“ckt”,“workphone”:“12315423”,“fir