2012-03-13 15 views
3

投稿をしようとしていますが、毎回私は411の応答エラーが発生します。私はPythonでリクエストライブラリを使用しています。Pythonでコンテンツ長を計算する

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

次に、コンテンツの長さをh = {'content-length' : '0'}と指定してもう一度お試しください。

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

だから、偉大な、しかし私は、情報のどれもに掲載されていない、成功を得る。

私はそれが「カットオフすることができて理にかなっているコンテンツの長さを計算する必要があると思います" ポスト。

私の質問は、のURLを指定してcontent-lengthをどのように計算できますか? (可能であればPythonで)

+1

あなただけの 'urllib'を使用している場合、それは動作しますか? ( 'httplib'をベースにしているので、' Request'は 'Content-Length'ヘッダに自動的には記入されません。) – katrielalex

+0

使用しているリクエストのバージョンに関する情報を追加してください。また、411応答のステータスコードをもたらすテストケースも含めてください。 –

+0

[あなたの質問の答えを得るためにこのリンクを訪問](http://stackoverflow.com/a/3854983/5354673) –

答えて

0

data引数なしで(しかし、データをURLに入れて)postメソッドを使用するのは奇妙です。 official requests documentationから例で

ルック:

>>> 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": "" 
} 
1

空体とPOST要求を送信する限りContent-Lengthヘッダが0に送信され、設定されているように完全に合法です。 リクエストは通常、Content-Lengthヘッダーの値を計算します。あなたが観察した動作は、恐らく223 - Content-Lengthが存在しないためです。バグが問題が修正されましたように見える閉じられていないが、 は:

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": "" 
} 
関連する問題