Wie POST, chunked-kodierten Daten in Python

Ich versuche zu POSTEN aufgeteilte codierte Daten zu httpbin.org/post. Ich habe zwei Optionen: Anforderungen und httplib

Mit Anforderungen

#!/usr/bin/env python

import requests

def gen():
        l = range(130)
        for i in l:
                yield '%d' % i

if __name__ == "__main__":
        url = 'http://httpbin.org/post'
        headers = {
                        'Transfer-encoding':'chunked',
                        'Cache-Control': 'no-cache',
                        'Connection': 'Keep-Alive',
                        #'User-Agent': 'ExpressionEncoder'
                }
        r = requests.post(url, headers = headers, data = gen())
        print r

Mit httplib

#!/usr/bin/env python

import httplib
import os.path

if __name__ == "__main__":
        conn = httplib.HTTPConnection('httpbin.org')
        conn.connect()
        conn.putrequest('POST', '/post')
        conn.putheader('Transfer-Encoding', 'chunked')
        conn.putheader('Connection', 'Keep-Alive')
        conn.putheader('Cache-Control', 'no-cache')
        conn.endheaders()
        for i in range(130):
                conn.send(str(i))

        r = conn.getresponse()
        print r.status, r.reason

In beiden Fällen, wenn ich Wireshark analysieren Spuren, die ich nicht sehen mehrere chunks gesendet. Stattdessen, was ich sehe, ist, dass alle Daten in einem einzigen chunk? Bin ich hier etwas fehlt?

  • zum erzwingen von http.client zu senden, chunked-encoding-HTTP-body in python?
  • Sind Sie sicher? Die Auswahl der einzelnen HTTP-Nachricht in Wireshark, Sie sollten in der Lage sein zu erweitern die Hypertext-Transfer-Protokoll Teil. , Die erweiterten Teil eine subheader namens 'HTTP chunked response', das Ihre Daten enthält.
  • Ja, Sie haben Recht. Für einige Grund, mein Verständnis von, wie chunked-Daten angezeigt wird, auf Wireshark war fehlerhaft. Ich dachte, es erscheint immer als ein separates Paket. Vielen Dank für Ihre Zeit.
  • mit httplib Sie benötigen, um drucken Sie die Länge der Stücke Zeile für Zeile, auch?
  • Es funktionierte korrekt. Ich hatte erwartet, um zu sehen, separaten Spur für jede Gruppe von Blöcken auf der pcap-was nicht passieren.
Schreibe einen Kommentar