ビジネスiアプリ入門(7)
|
論理値 | 1byte 1:true, 0:false |
数 | 1byte 0-255 |
文字列 | 1byte 文字数 nbyte 文字数分のSJIS文字 |
以上を元に、ビジネスIMで使用するプロトコルをまとめると以下のようになります。
機能 | メソッド名 | GETパラメータ | 受け取りデータの解釈方法 |
初回登録 | sendInit | name:名前 | 論理値:登録判定 |
データ更新 | update | name:名前 | 数:メンバーの数 文字列:名前(メンバーの数分) 文字列:状態(メンバーの数分) メッセージの数 文字列:送り主(メッセージの数分) 文字列:内容(メッセージの数分) |
状態変更 | sendState | name:名前 state:状態 | なし |
メッセージ送信 | sendMessage | myname:自分の名前 toname:宛先 mes:メッセージ | なし |
iアプリとServletの実装
設計したプロトコルを元にコーディングします。まずiアプリからの通信部です。先ほどの通信テストのコードを参考にHTTP通信メソッドをパラメータを配列で受け取ってInputStreamを返すように変更し、Networkクラスのhttpメソッドとします。このときパラメータの値は、com.nttdocomo.net.URLEncoderを使ってURLエンコードする必要があります。
class Network {
InputStream http(String name, String[] nameval) {
String res = null;
HttpConnection conn = null;
try {
String url = IApplication.getCurrentApp().getSourceURL() + "servlet/BusinessIM/" + name;
// パラメータをエンコードする
if (nameval.length > 0) {
url += "?";
for (int i = 0; i < nameval.length / 2; i++) {
url += nameval[i * 2] + "=" + URLEncoder.encode(nameval[i * 2 + 1]) + "&";
}
url = url.substring(0, url.length() - 1);
}
System.out.println("access to: " + url);
conn = (HttpConnection)Connector.open(url, Connector.READ);
conn.setRequestMethod(HttpConnection.GET);
conn.connect();
InputStream in = conn.openInputStream();
int len = (int)conn.getLength();
// 長さ分だけ読み込む
byte[] buf = new byte[len];
int off = 0;
for (;;) {
int n = in.read(buf, off, len);
if (n < 0)
throw new Exception();
off += n;
len -= n;
if (len == 0)
break;
}
in.close();
conn.close();
return new ByteArrayInputStream(buf);
} catch (Exception e) {
try {
conn.close();
} catch (Exception e2) {
}
}
return null;
}
}
iアプリからの通信コード(httpメソッド)
この通信コードを使い、iアプリからの初回登録コードをプロトコルに沿って作成すると以下のようになります。
boolean sendInit(String myname) { // IDを受け取る
try {
InputStream is = http("sendInit", new String[] { "name", myname });
boolean res = is.read() == 1;
return res;
} catch (Exception e) {
}
return false;
}
初回登録のiアプリコード
[福野泰介, ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!
最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!