Mobile:NEWS |
2002年9月27日 01:22 AM 更新
|
ビジネスiアプリ入門(7)
待ち受けビジネスIMのサーバ(Servlet)と通信部の作成(1/4)
待ち受けビジネスIMの通信プロトコルを設計し、Servletとiアプリの通信部を作成する
今回はサーバ側のServletを作成し、ダミー実装としておいたiアプリの通信部の作成と合わせて一通りの動作を確認します。
iアプリとServletの接続テスト
iアプリにはサーバとの通信手段としてHTTPプロトコルによるGETとPOSTが使用可能です。今回のビジネスIMにおいても、この手段を使ってServletとの通信を実装します。
まずは簡単な通信コードを書いて、Servletとの接続を確かめます。iアプリから、HTTPのGETメソッドを使って、パラメータ名"test"、値"txt"を送ります。コードは下記のようになります。
import com.nttdocomo.ui.*;
import java.io.*;
import com.nttdocomo.io.*;
import javax.microedition.io.*;
public class A extends IApplication {
public void start() {
String res = http("servlet/Test?test=txt");
showDialog(res);
}
void showDialog(String s) {
Dialog d = new Dialog(0, "dialog");
d.setText("" + s);
d.show();
}
String http(String name) {
String url = IApplication.getCurrentApp().getSourceURL();
url += name;
String res = null;
HttpConnection conn = null;
try {
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 String(buf);
} catch (Exception e) {
try {
conn.close();
} catch (Exception e2) {
}
}
return null;
}
}
iアプリの通信コード
iアプリから送られるパラメータを受け取り結果を返すServletは次のようになります。iアプリとServlet間でのやりとりは、特に種類を特定しないデータなので、Content-Typeとして"application/octet-stream"指定し、長さを設定するようにします。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class Test extends HttpServlet {
public void doGet(
HttpServletRequest request, HttpServletResponse response
) throws IOException, ServletException {
String resmes = "test value is \"" + request.getParameter("test") + "\"";
byte[] res = resmes.getBytes("SJIS");
response.setContentType("application/octet-stream");
response.setContentLength(res.length);
OutputStream os = response.getOutputStream();
os.write(res);
os.close();
}
}
Servletの通信コード
DoJaエミュレータの「その他」「ネットワーク設定」「ADFのURL」に、Servletを設置したURLを記述(例、http://localhost:8080/)して実行すると、iアプリからServletへ通信が行われ、結果が表示されることが確認できます。
iアプリとServlet通信テスト実行画面
今回のビジネスIMにおいては、Servletに送るデータがそう多くはないので、上記で用いたHTTPのGETを使用した通信可能のみで対応することとします。
[福野泰介, ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
前のページ | 1/4 | 次のページ