Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么来自web服务的POST方法拒绝我的json数据?_Python_Json_Flask - Fatal编程技术网

Python 为什么来自web服务的POST方法拒绝我的json数据?

Python 为什么来自web服务的POST方法拒绝我的json数据?,python,json,flask,Python,Json,Flask,我想使用flask库在python中构建一个web服务,但一开始就遇到了困难。我成功地使用了Get方法,但是我的POST方法遇到了一些问题。我遇到的问题是,当我使用POST方法发送Json数据时,我的程序崩溃并出现以下错误:“ConnectionResetError:[WinError 10054]远程主机强制关闭了现有连接 在处理上述异常期间,发生了另一个异常:” 如果我发送没有数据的请求,一切正常 下面是来自服务器的方法POST的代码。我把它保持在基本状态,这样我可以更容易地发现错误 cla

我想使用flask库在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)

您知道我做错了什么吗?

您需要将其作为对象/字典发送,以便您可以通过服务器上的名称实际访问该值

服务器:

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)

您需要将其作为对象/字典发送,以便可以通过服务器上的名称实际访问该值

服务器:

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'}”该死!你的有效:)我会马上去看看有什么问题。非常感谢,祝你度过愉快的一天:我仍然会遇到同样的错误。难道我在代码中的其他地方出错了吗?我忘了发布我的标题:“headers={'content-type':'application/json'}”该死!你的有效:)我会马上去看看有什么问题。非常感谢,祝你今天愉快:D