为啥我的网络服务 POST 方法拒绝我的 json 数据? [复制]
Posted
技术标签:
【中文标题】为啥我的网络服务 POST 方法拒绝我的 json 数据? [复制]【英文标题】:Why my POST method from a web service refuses my json data? [duplicate]为什么我的网络服务 POST 方法拒绝我的 json 数据? [复制] 【发布时间】:2017-07-22 22:04:56 【问题描述】:我想使用烧瓶库在 python 中构建一个 Web 服务,但我一开始就卡住了。我设法使用 Get 方法取得了成功,但我的 POST 方法遇到了一些问题。我遇到的问题是,当我使用 POST 方法发送 Json 数据时,我的程序崩溃并出现以下错误:“ConnectionResetError: [WinError 10054] 现有连接被远程主机强行关闭
在处理上述异常的过程中,又发生了一个异常:" 如果我在没有数据的情况下发送请求,一切正常。
以下是来自服务器的 POST 方法的代码。我保持基本,以便更容易发现错误。
class End_Point(Resource):
def POST(self):
return 1
api.add_resource(End_Point,'/end_point')
以下是我提出使我的程序崩溃的请求的方式:
url = 'http://127.0.0.1:5000/end_point'
response = requests.post(url, data=json.dumps("123"), headers=headers)
你知道我做错了什么吗?
【问题讨论】:
【参考方案1】:您需要将其作为对象/字典发送,以便您可以通过服务器上的名称实际访问该值。
服务器:
from flask import Flask, request
from flask_restful import Resource, Api, reqparse
app = Flask(__name__)
api = Api(app)
parser = reqparse.RequestParser()
parser.add_argument('mynum', type=int, help='mynum is a number')
class EndPoint(Resource):
def post(self):
args = parser.parse_args()
return "status": "ok", "mynum": args['mynum']
api.add_resource(EndPoint, '/end_point')
if __name__ == '__main__':
app.run(debug=True)
客户:
import requests
import json
headers = 'content-type': 'application/json'
url = 'http://localhost:5000/end_point'
response = requests.post(url, data=json.dumps(dict(mynum=123)), headers=headers)
print('response', response.text)
【讨论】:
我仍然遇到同样的错误。可能是我在代码的其他地方有错误吗?我忘了发布我的标题:“headers = 'content-type': 'application/json'” 该死!你的工作:)) 我会马上看看有什么问题。非常感谢,祝你有美好的一天:D以上是关于为啥我的网络服务 POST 方法拒绝我的 json 数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 IE 10 拒绝通过 jQuery $.ajax 发送 POST 数据
为啥邮递员 POST 方法不提供 `json` 格式的参数?