2つのPythonスクリプトがあります。 1つは rllib2ライブラリ を使用し、1つは Requestsライブラリ を使用します。
Requestsの実装は簡単ですが、urlib2のread()
関数に相当するものは見つかりません。例えば:
...
response = url.urlopen(req)
print response.geturl()
print response.getcode()
data = response.read()
print data
投稿URLを作成すると、data = response.read()
がコンテンツを提供します。vclouddirector apiインスタンスに接続しようとしていますが、応答にはアクセスできるエンドポイントが表示されます。ただし、次のようにリクエストライブラリを使用する場合.....
....
def post_call(username, org, password, key, secret):
endpoint = '<URL ENDPOINT>'
post_url = endpoint + 'sessions'
get_url = endpoint + 'org'
headers = {'Accept':'application/*+xml;version=5.1', \
'Authorization':'Basic '+ base64.b64encode(username + "@" + org + ":" + password), \
'x-id-sec':base64.b64encode(key + ":" + secret)}
print headers
post_call = requests.post(post_url, data=None, headers = headers)
print post_call, "POST call"
print post_call.text, "TEXT"
print post_call.content, "CONTENT"
post_call.status_code, "STATUS CODE"
....
....呼び出し後のリクエストでステータスコードが200であっても、print post_call.text
およびprint post_call.content
は何も返しません。
リクエストからの応答がテキストまたはコンテンツを返さないのはなぜですか?
リクエストには、Urlib2のread()
と同等のものはありません。
>>> import requests
>>> response = requests.get("http://www.google.com")
>>> print response.content
'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage"><head>....'
>>> print response.content == response.text
True
POSTリクエストは、コンテンツを返していないようです。多くの場合、POSTリクエストが該当します。おそらくそれはクッキーを設定しますか?ステータスコードは、POSTが成功したことを示しています。