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 | 次のページ



モバイルショップ

最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!

最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!