2011-10-19 11 views
7

pythonの内部からcurlを使用してHTTP POSTリクエストを発行する方法を理解できません。Http POST Curl in Python

私はfacebook open graphに投稿したいと思っています。ここでは、私がPythonで正確に複製したい例を示します。

curl -F 'access_token=...' \ 
    -F 'message=Hello, Arjun. I like this new API.' \ 
    https://graph.facebook.com/arjun/feed 

誰でもこのことを理解できますか?

答えて

14

あなたはあなたのためのすべてのPOST-INGを行いPython用のFacebookの具体的な高いレベルのライブラリもありPythonや、より高いレベルurllib2

import urllib 

params = {} 

params['access_token'] = '*****' 
params['message'] = 'Hello, Arjun. I like this new API.' 

params = urllib.urlencode(params) 
f = urllib.urlopen("https://graph.facebook.com/arjun/feed", params) 
print f.read() 

を投稿するhttplibを使用することができます。あなたが最初の場所でカール使用しないのはなぜ

https://github.com/pythonforfacebook/facebook-sdk/

https://github.com/facebook/python-sdk

+0

私がまさに必要 - ありがとう! – Ron

1

Pythonにはの広範なライブラリがあります。には、ウェブリクエストのためのライブラリが含まれています。別のプログラムを呼び出して出力を受け取る必要はありません。

data Pythonのドキュメントから

まず、前記

は、そのようなデータが必要とされていない場合、サーバに 又はNoneを送信するために追加のデータを指定する文字列であってもよいです。現在、HTTPリクエストはデータを使用するものだけが です。 データパラメータがの場合、 GETではなく、HTTP要求がPOSTになります。 dataは、 の標準application/x-www-form-urlencodedフォーマットのバッファである必要があります。 urllib.urlencode()関数は、2タプル のマッピングまたはシーケンスを取り、この形式の文字列を返します。 urllib2モジュールは、HTTP/1.1 リクエストをConnection:closeヘッダーを含めて送信します。

ので、

import urllib2, urllib 
parameters = {} 
parameters['token'] = 'sdfsdb23424' 
parameters['message'] = 'Hello world' 
target = 'http://www.target.net/work' 

parameters = urllib.urlencode(parameters) 
handler = urllib2.urlopen(target, parameters) 
while True: 
    if handler.code < 400: 
     print 'done' 
     # call your job 
     break 
    elif handler.code >= 400: 
     print 'bad request or error' 
     # failed 
     break