簡體   English   中英

Python HTTP服務器不響應POST和GET請求

[英]Python HTTP server not responding on POST and GET requests

我需要創建一個HTTP服務器,以處理HTML頁面的Get和Post請求。 我希望名稱和姓氏在“發布請求”中發送到服務器,然后與“獲取請求”一起顯示在屏幕上。 我創建了HTML頁面,並創建了HTTP服務器。 但是,我不確定如何使所有內容連接起來。 我一直在出錯。 我當前收到的錯誤:錯誤代碼:501

消息:不支持的方法(“ POST”)。

錯誤代碼說明:HTTPStatus.NOT_IMPLEMENTED-服務器不支持此操作。

似乎問題在於服務器不支持Post請求,但是我不確定如何使它支持請求。

import http.server
import socketserver

PORT = 8080
Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

您必須使用方法do_POST創建自己的Handler do_POST

import http.server
import socketserver

class MyHandler(http.server.BaseHTTPRequestHandler):

    def do_POST(self):
        print("POST received")

        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write("Hello World".encode('utf-8'))


PORT = 8080
Handler = MyHandler#http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

我用

import requests

r = requests.post('http://localhost:8080')
print(r.text)

我不知道如何獲取在POST請求中發送的值-我從不需要使用它。

使用FlaskDjangoBottle等更容易做到。


編輯:Flask相同。 它還顯示了如何獲取值並進行響應使用。

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        print(request.form['name'], request.form['last_name'])
        return "Hello " + request.form['last_name']
    return "Hello World"

app.run(port=8080)

經過測試

import requests

form = {'name': 'James', 'last_name': 'Bond'}

r = requests.post('http://localhost:8080', data=form)

print(r.text) # Hello Bond

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM