Android携帯ゲームを作って世界に配信してみよう(5) ―― インターネットからデータをダウンロードするアプリを開発する

山田 元康

tag: 組み込み

エレキ系DIY 2012年5月10日

Column 1 POSTメソッドによる通信処理

 今回のサンプル・コードは,HTTPプロトコルのGETメソッドによる通信を行っています.これは,ブラウザでいうと,通常のリンクをクリックした際の処理になります.このGETメソッドというのは,パラメータをすべてURLエンコードして,URLに含めてサーバに送信する形式です.

(例) http://host/path/program?param1=value1&param2=value2

 上記の例でいうと,「?」以降がパラメータであり,「<パラメータ名>=<値>」という形の組み合わせを「&」で連結しています.

 ただし,GETメソッドのほかに,HTTP通信には,フォームの入力内容を送信する際などに利用する,POSTメソッドという方式があります.これは,URLではなく専用のHTTPヘッダにパラメータをエンコードしてサーバに送信する方式です.

 どのような場合にPOSTメソッドを利用するとよいのでしょうか.まず,ブラウザやサーバの扱えるURLの長さには制限があることから,多数の入力項目があるフォームや,ファイルをアップロードする場合にPOSTメソッドを利用します.次に,ブラウザからサーバには遷移元のURLがReferrerというヘッダにて送信されるので,他のサーバにURLが漏れてはまずいパスワードやセッションIDなどの情報がある場合も,POSTメソッドを利用します.

 

●通信方法

 それでは,AndroidアプリからのPOSTメソッドによる通信方法を簡単に説明します.GETメソッドによる処理の間〔リストA(2)(3)の間〕で,アプリからサーバにデータを送信します.

 

リストA POSTメソッドによる通信処理

    final URLConnection connection = url.openConnection(); // (2)
    connection.setDoOutput(true); // (a)
    final OutputStream output = connection.getOutputStream(); // (b)
    output.write("a=b&c=d".getBytes()); // (c)
    output.close();    // (d)
    final InputStream stream = connection.getInputStream(); // (3)

 

 リストA(a)にて,URLConnectionクラスのsetDoOutputメソッドを呼び出し,サーバにデータを送信することを宣言します.デフォルトでは,サーバにデータを送信しないという設定になっているので,接続のたびに変更する必要があります.

 次に,リストA(b)のように,URLConnectionクラスのgetOutputStreamメソッドを呼び出し,接続先のサーバへのデータ送信を管理するクラスOutputStreamを取得します.

 今回は,フォーム変数aの値bと,変数cの値dをサーバに送信するとして,URLエンコードと同じようにリストA(C)のようにエンコードして,OutputStreamに書き出します.

 最後に,書き出しの終了処理を行い〔リストA(d)〕,サーバからの応答を受け取ります〔リストA(3)〕.

 

やまだ・もとやす
スパイシーソフト(株) 代表取締役

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日