アプリ担当の木村です。今回もPythonのお話です。

Pythonでの通信方法です。

get通信

サンプルコードはこんな感じです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib

#送信先URL
url = "http://test.test"
#getパラメータ
param = [
( "id", 0),
( "param", "dammy"),
]

url += "?{0}".format( urllib.urlencode( param ) )

#API実行
result = None
try :
    result = urllib.urlopen( url ).read()
except ValueError :
    print "アクセスに失敗しました。"

ご覧の通り、
urlに送信するurlを
paramにgetパラメータを設定しています。

urllib.urlencode( param )

でurlのパラメータの形に変換しており結果

`http://test.test?id=0&param=dammy`

こんな感じに変換されます。

post通信

初めはrequestsを使用する予定だったのですが、
うまく動作しなかったので、urllib、urllib2を使用することにしました。

サンプルコード

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import urllib2

url = "http://test.test"
params = {"id":0, "param" : "dammy" }
params = urllib.urlencode(params)

req = urllib2.Request(url)
# ヘッダ設定
req.add_header('test', 'application/x-www-form-urlencoded')
# パラメータ設定
req.add_data(params)


res = urllib2.urlopen(req)
r = res.read()
print r

パラメータを
`urllib.urlencode( param )`
で変換させるところは変わらないですね。
`req.add_header('test', 'application/x-www-form-urlencoded')`
`req.add_data(params)`
でヘッダーとパラメータを設定しています。

ちなみにrequestsで行うとすると以下の様になるようです。
自分の環境ではCakePHPのwebサーバーに送ったのですが、
post通信になりませんでした。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

url = "http://test.test"
s = requests.session()
params = {"id":0, "param" : "dammy" }
r =  s.post(url, params=params)
print r.text.encode("utf-8");

こちらの方が簡単に実装できるので、使えるならこっちの方がよかったです。
あ、requestsはインストールする必要があるので使う場合は以下のコマンドで
インストールしてください。
`pip install requests`
以上です。

お見積いたします。どんなことでも、お気軽にご相談ください。

お客様のご要望とご予算に応じて最適なソリューションをご提案いたします。
VRの開発やアプリ開発以外でも、ぜひ一度ご相談ください。