为啥我的网络服务 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 数据

为啥 json-parser 解析错误我的 json

为啥邮递员 POST 方法不提供 `json` 格式的参数?

当我运行 POST 请求时,为啥它不返回我的 Mongoose 模式定义中定义的 JSON?

拒绝连接我的服务器错误,为啥?

为啥 PHP 无法从 Js FormData fetch 中获取 $_POST 数据?