Frage

Ich versuche, einen Beitrag zu verfassen, erhalte jedoch jedes Mal einen 411-Antwortfehler.Ich verwende die Anforderungsbibliothek in Python.

In [1]: r.post(url)
Out[1]: <Response [411]>

Dann habe ich die Inhaltslänge angegeben h = {'content-length' : '0'} und versuche es erneut.

In [2]: r.post(url,h)
Out[2]: <Response [200]>

Großartig, ich bekomme einen Erfolg, aber keine der Informationen wird veröffentlicht.

Ich denke, ich muss die Inhaltslänge berechnen, was Sinn macht, da es dazu führen könnte, dass der Beitrag „abgeschnitten“ wird.

Meine Frage ist also, ob eine URL gegeben ist www.example.com/import.php?key=value&key=value Wie kann ich das berechnen? content-length?(wenn möglich in Python)

War es hilfreich?

Lösung

Es sieht seltsam aus, dass Sie es verwenden post Methode ohne die data Argument (aber Daten in die URL einfügen).

Schauen Sie sich das Beispiel aus dem an offizielle Anfragen Dokumentation :

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print r.text
{
  "origin": "179.13.100.4",
  "files": {},
  "form": {
    "key2": "value2",
    "key1": "value1"
  },
  "url": "http://httpbin.org/post",
  "args": {},
  "headers": {
    "Content-Length": "23",
    "Accept-Encoding": "identity, deflate, compress, gzip",
    "Accept": "*/*",
    "User-Agent": "python-requests/0.8.0",
    "Host": "127.0.0.1:7077",
    "Content-Type": "application/x-www-form-urlencoded"
  },
  "data": ""
}

Andere Tipps

Senden POST Eine Anfrage mit leerem Textkörper ist völlig legal, solange die Content-Length Der Header wird gesendet und auf gesetzt 0. Anfragen Berechnen Sie normalerweise den Wert für Content-Length Header.Das von Ihnen beobachtete Verhalten ist wahrscheinlich auf ein Problem zurückzuführen 223 - Inhaltslänge fehlt.Obwohl der Fehler nicht behoben ist, sieht es so aus, als ob das Problem behoben wurde:

C:\>python
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> requests.__version__
'0.11.1'
>>> r = requests.post('http://httpbin.org/post?key1=valueA&key2=valueB')
>>> print r.content
{
  "origin": "77.255.249.138",
  "files": {},
  "form": {},
  "url": "http://httpbin.org/post?key1=valueA&key2=valueB",
  "args": {
    "key2": "valueB",
    "key1": "valueA"
  },
  "headers": {
    "Content-Length": "0",
    "Accept-Encoding": "identity, deflate, compress, gzip",
    "Connection": "keep-alive",
    "Accept": "*/*",
    "User-Agent": "python-requests/0.11.1",
    "Host": "httpbin.org",
    "Content-Type": ""
  },
  "json": null,
  "data": ""
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top