Urllib2.urlopenを使用してGETとPOSTリクエストを実行しようとしています。ここから気づきました: https://stackoverflow.com/questions/2690723/ facebook-graph-api-and-Django GETリクエストをかなり簡単に実行できます。
そしてここから: djangoを使用してPOSTリクエストを送信する方法は? およびPythonドキュメント http:// docs.python.org/library/urllib2.html POSTリクエストを実行するには、データパラメータが必要なようです。
しかし、FacebookのAPIを見ると: http://developers.facebook.com/docs/reference/api/event/#invited
HTTP POST to/EVENT_ID/invited/USER_IDを発行することにより、ユーザーをイベントに招待できます
APIページに記載されているように、このURLを直接開くと、ユーザーが招待されているかどうかのみが確認されるため、urlopenを使用してこれを行う方法がわかりません。
/ EVENT_ID/invited/USER_IDにHTTPGETを発行することにより、特定のユーザーがイベントに招待されているかどうかを確認できます。
入力に感謝します。
Urllib2.urlopen()はデータパラメータを指定した場合にのみ投稿を送信しますが、空のPOSTリクエストを送信したいようです。
実際には空のPOST、data = Noneの場合にのみGETリクエストを送信するようです:
urllib2.urlopen("http://127.0.0.1:8000", data="")
"POST / HTTP/1.1" 501 -
urllib2.urlopen("http://127.0.0.1:8000", data=None)
"GET / HTTP/1.1" 200 -
お役に立てば幸いです。ここに例がある小さなHTTPサーバーから応答のプリントアウトを取得しました: http://docs.python.org/library/simplehttpserver.html
空のPOSTを送信する別の方法は、リクエストを作成してそのget_methodをオーバーライドすることです。これはこの場合はより手間がかかりますが、他の場合はよりクリーンになる可能性があります(すでにリクエストがある場合は、例)。
request = urllib2.Request(url)
request.get_method = lambda: 'POST'
urllib2.urlopen(request)
get_methodは、使用するメソッドを返すメソッドであるため、ここでは、「POST」を返すラムダ関数でオーバーライドします。
Python (urllib2) ドキュメントから直接
urllib2.urlopen(url [、data] [、timeout])URL urlを開きます。これは、文字列またはRequestオブジェクトのいずれかです。警告HTTPSリクエストは、サーバーの証明書の検証を行いません。 dataは、サーバーに送信する追加データを指定する文字列、またはそのようなデータが必要ない場合はNoneの場合があります。現在、データを使用するのはHTTPリクエストだけです。 HTTPリクエストは、データパラメータが指定されている場合、GETではなくPOST)になります。
私はあなたがあなた自身の質問にほとんど答えたと思います、あなたはそれをただ考えすぎています...
ユーザーを招待するには、urlopenでPOST
ユーザーが招待されているかどうかを確認するには、urlopenを使用してGETを発行します。
どちらの場合も、同じURLで通信していますが、違いはGETまたはPOSTです。
GETとa POST with urlopen)の違いがわからない場合は、次のドキュメントをお読みください。