Jestem nowicjuszem w Pythonie (używając v3.3) i programowaniem w sieci i przez całą noc zmagałem się z problemem. Ja wydaniem wywołanie POST do mojego serwera i wysyłając mu pewne dane w następujący sposób:Jak uzyskać dostęp do danych wysłanych do mojego serwera za pomocą BaseHTTPRequestHandler?
DATA = {"listName":"Test list","listDesc":"A test list with test stuff in it.","refreshMode":"Replace","DBKey":"1","UserDisplaySeq":"1"}
DATA = json.dumps(DATA)
METHOD = "POST"
DATA = DATA.encode("utf-8")
params = "account_id=acct 2"
try:
URL = "http://localhost:8080/lists?" + quote_plus(params)
request = urllib.request.Request(url=URL,data=DATA,method=METHOD)
response = urllib.request.urlopen(request)
...
Mam też obsługi żądania kodowane następująco (istnieje wiele instrukcji print tu dla celów debugowania):
class MyHandler(BaseHTTPRequestHandler):
...
def do_POST(self):
length = int(self.headers['Content-Length'])
print("HEADERS: ", self.headers)
print (str(length))
print(self.rfile)
post_data = urllib.parse.parse_qs(self.rfile.read(length).decode('utf-8'))
print(post_data)
drukuje następujący wynik do konsoli:
Starting thread
started httpserver...
HEADERS: Accept-Encoding: identity
User-Agent: Python-urllib/3.3
Content-Length: 138
Content-Type: application/x-www-form-urlencoded
Host: localhost:8080
Connection: close
138
<_io.BufferedReader name=404>
{}
moje pytania:
1) na serwerze (do_POST), jak mogę dostęp do danych, które myślę, że wysyłam z moją prośbą (tj. { "Listname": "lista Test", "listDesc": "Test ...)
2) Czy moja prośba nawet wysyłania danych w pierwszej kolejności
3) Czy jest jakieś miejsce? gdzie jest to udokumentowane w kategoriach początkujących inwalidzkim?
Może się okazać, że korzystanie z frameworka WWW, takiego jak kolba lub butelka, znacznie ułatwi to zadanie. – Blender
@Blender - Dzięki za poradę. Próbowałem używać Butelki, ale wydawało się, że naprawdę wykorzystałem HTML, który w naszym przypadku nie jest używany. Piszemy aplikację RESTful, aby zrównoważyć pracę na wielu serwerach i naprawdę nie ma ona składnika przeglądarki. Podobnie jak prawie wszystkie te rzeczy, znalazłem także dokumentację Butelki, aby była świetna, jeśli znałeś już swoje rzeczy, ale naprawdę ciężko dla początkujących, którzy nie mają tła w koncepcjach internetowych. – Ben