2017-03-02 94 views
-1

我想用python庫在python中構建一個web服務,但是我一開始就陷入了困境。我設法使用Get方法獲得成功,但是我的POST方法遇到了一些麻煩。我遇到的問題是,當我使用POST方法發送Json數據時,我的程序崩潰,出現以下錯誤:「ConnectionResetError:[WinError 10054]現有連接被遠程主機強制關閉爲什麼我的Web服務的POST方法拒絕我的JSON數據?

在處理以上例外,發生了另一個異常:「 如果我發送沒有數據的請求一切正常。

下面是來自服務器的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) 

你有什麼想法,我究竟做錯了什麼?

回答

0

您需要將它作爲對象/字典發送,以便實際上可以通過服務器上的名稱訪問值。

服務器:

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) 
+0

我仍然得到同樣的錯誤。它可能是我在代碼中的其他地方有錯誤嗎?我忘了發佈我的標題:「headers = {'content-type':'application/json'}」 –

+0

該死!你的工作:))我會正確的看到最新的錯誤。非常感謝,祝你有個美好的一天:D –

相關問題