Nachbearbeitung von Python (NG)

Dies ist ein Beispiel für die Behandlung von Post-Parametern, die auf einem Python-Server nicht funktioniert.

Serverprogramm

simple_server.py


import http.server
import socketserver
from http.server import BaseHTTPRequestHandler
import cgi
import sys

class PostHandler(BaseHTTPRequestHandler):
	def do_POST(self):
		sys.stderr.write("*** do_POST *** aaa\n")
		try:
			ff = cgi.FieldStorage(
				self.rfile,
				self.headers,
				environ={
				"REQUEST_METHOD": "POST",
				"CONTENT_TYPE": self.headers["Content-Type"],
				},)
			key = ff.getfirst("key","")
			sys.stderr.write("*** do_Post *** key = %s\n" % key)
		except Exception as ee:
			sys.stderr.write("*** error *** in cgi.FieldStorage ***\n")
			sys.stderr.write(str(ee) + "\n")

if __name__ == '__main__':
	sys.stderr.write("*** start ***\n")
	PORT = 8080

	with socketserver.TCPServer(("", PORT), PostHandler) as httpd:
		print("serving at port", PORT)
		sys.stderr.write("*** start ***\n")
		httpd.serve_forever()

Server -Ausführung

python3 simple_server.py

Zugriff vom Client

  1. Fall, in dem POST-Parameter übergeben werden können
curl -X POST http://localhost:8080/ -d 'key=t1855'
  1. Fall, in dem POST-Parameter nicht übergeben werden können
curl -X POST -H "Content-Type: application/json" -d '{"key":"t1855"}' http://localhost:8080/

Serverseitiger Fehler

*** error *** in cgi.FieldStorage ***
write() argument must be str, not bytes
  1. Ich kann den nächsten Fall auch nicht bestehen.
curl -X POST -H "Content-Type: application/json" [email protected] http://localhost:8080/

in01.json


{"key":"t1855"}

Zum Testen verwendete Version (Ubuntu 19.10)

$ python3 --version
Python 3.7.5

Gleiches Ergebnis für die nächste Version (Arch Linux)

$ python3 --version
Python 3.8.1

Recommended Posts

Nachbearbeitung von Python (NG)
Verschiedene Verarbeitung von Python
Grundlagen der binärisierten Bildverarbeitung durch Python
Python-Bildverarbeitung
Python-Dateiverarbeitung
Graustufen durch Matrix-Reinventor der Python-Bildverarbeitung-
Python-Grundlagen ①
Kopie von Python
Zeichnen mit Matrix-Reinventor von Python Image Processing-
Die Geschichte der Verarbeitung A von Blackjack (Python)
Status jedes Python-Verarbeitungssystems im Jahr 2020
Faltungsfilterung durch Matrix-Reinventor der Python-Bildverarbeitung-
Einführung von Python
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Bildverarbeitung? Die Geschichte, Python für zu starten
Python verteilte Verarbeitung Spartan
[Python] Operation der Aufzählung
Liste der Python-Module
Dateiverarbeitung in Python
Python: Verarbeitung natürlicher Sprache
Kommunikationsverarbeitung durch Python
Multithread-Verarbeitung in Python
Vereinheitlichung der Python-Umgebung
Kopie der Python-Einstellungen
Grundlagen der Python-Scraping-Grundlagen
[Python] Verhalten von Argmax
Erste Python-Bildverarbeitung
Verwendung von Python-Einheimischen ()
der Zen von Python
Textverarbeitung mit Python
Installieren von Python 3.3 rc1
Verarbeitung in Python beenden
Bildverarbeitung mit Python
# 4 [Python] Grundlagen der Funktionen
Grundkenntnisse in Python
Nüchterne Trivia von Python3
Zusammenfassung der Python-Argumente
Grundlagen von Python: Ausgabe
Installation von matplotlib (Python 3.3.2)
Anwendung von Python 3 vars
Abbildung zur Verarbeitung von Python-Zeichenfolgen
[Sprachverarbeitung 100 Schläge 2020] Zusammenfassung der Antwortbeispiele von Python
Bildverarbeitung durch Matrix Basics & Contents-Reinventor der Python-Bildverarbeitung-
Implementierungsbeispiel eines einfachen LISP-Verarbeitungssystems (Python-Version)
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Untersuchen Sie die genaue Verarbeitung des Python-Datasets (SQLAlchemy-Wrapper).
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Asynchrone Verarbeitung von Python ~ Asynchron vollständig verstehen und warten ~
Zusammenfassung der Datumsverarbeitung in Python (Datum / Uhrzeit und Datum)
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Bildverarbeitung mit Python (Teil 2)
100 Sprachverarbeitungsklopfen mit Python 2015
[Python] Richtige Verwendung der Karte
UTF8-Textverarbeitung mit Python
python3 Messen Sie die Verarbeitungsgeschwindigkeit.