2017-04-17 4 views
0

Hier ist ungefähr, wie die Anfrage durch Fiddler aussieht. Ich kann sehen, dass zwei zusätzliche Parameter gesendet werden, die ich nicht programmatisch mit Python senden kann.Python fordert Formulardaten an Hinzufügen von Inhaltslänge zu jeder Anfrage

--13155ffa-71a1-4e80-b213-dd238786ee20 
    Content-Disposition: form-data; name="image"; filename="image.jpeg" 
    Content-Type: image/jpeg 
    Content-Length: 8557 

    --13155ffa-71a1-4e80-b213-dd238786ee20 
    Content-Disposition: form-data; name="lat" 
    Content-Length: 6 

    18.975 
    --13155ffa-71a1-4e80-b213-dd238786ee20 
    Content-Disposition: form-data; name="long" 
    Content-Length: 10 

Die erste ist Content-Length und das zweite ist Content-Type unter der Datei. Ist es möglich, dies in Anfragen zu tun?

Antwort

0

As stated in the documentation kann der Content-Type, indem eine Drei-Element-Tupel als Wert des files dict eingestellt wird, zB ,:

requests.post(
    url, 
    files={ 
     'image': ('image.jpeg', filehandle, 'image/jpeg'), 
     'lat': ('filename', filehandle, 'text/plain'), 
     'long': ('filename', filehandle, 'application/octet-stream'), 
    }, 
) 

Sie nicht die Content-Length-Header gesetzt, als Sätze fordern es automatisch für Sie. Der einzige Grund, eine andere Content-Length als die Requests Sets zu verwenden, wäre, wenn (a) die Länge der Requests falsch ist, dann sollten Sie einen Fehlerbericht einreichen, oder (b) Sie den Server belügen wollen Senden der Daten an, was falsch ist.

+0

Danke das hat gut geklappt. – taijamen

Verwandte Themen