• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:iアプリとwebサーバーの通信)

iアプリとwebサーバーの通信

このQ&Aのポイント
  • iアプリとwebサーバーの通信について教えてください。
  • 携帯側からwebサーバーへの通信手順を教えてください。
  • セッション管理やデータ送信についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ryo-_-3
  • ベストアンサー率14% (2/14)
回答No.2

こんにちは。 そうですね。webサーバからiアプリに接続というのは無理です。 web側の処理は通常の掲示板等と同等の処理になります。 iアプリから情報をPOSTで送信 → Webサーバ側でPOSTから情報を取得 取得したデータを使用して処理を行い、結果を返す。 asp.netは詳しくないのでどうコーディングするかわかりませんが、 一般的なPOSTデータまたはGETデータの取得でiアプリからの情報は 取得できます。 iアプリから情報送信(変数、例外処理等は宣言されてるとお考え下さい) String data = "key=1234567&name=taro&age=20"; con = (HttpConnection)Connector.open ( "http://サーバーURL/regist.php", Connector.READ_WRITE, true ); con.setRequestMethod ( HttpConnection.POST ); con.setRequestProperty ( "Content-Type", "application/x-www-form-urlencoded" ); op = con.openOutputStream(); op.write ( data.getBytes() ); op.close(); con.connect(); con.close(); こうすることによりPOSTにて情報が送信されます。 webサーバ側では(簡単なのでPHPにて書きます) <?php $key = $_POST['key']; $name = $_POST['name']; $age = $_POST['age']; print "key = " . $key . " 名前 = " . $name . " 年齢 = " . $age; ?> 上のJavaの部分で入力ストリームを取得すれば上記のPHPで出力した文字列が返ってきます。 1.iアプリにて[key=1234567&name=taro&age=20]を送信実行 2.サーバ側で各値を受け取る 3.受け取った値を加工して出力 4.iアプリにてwebサーバから出力された値を取得 簡単な通信はこんな感じです。

hideaboo
質問者

お礼

ありがとうございます。 詳しく書いて頂き感謝しています。 「 "http://サーバーURL/regist.php"」の‘regist.php’部分に asp.netのファイルを指定するのですよね。 通信部分のソースを自分なりに書いてみました。 public void connect() { HttpConnection hc = null; OutputStream os = null; InputStream is = null; try{ hc=(HttpConnection)Connector.open("http://URL/regist.aspx",Connector.READ_WRITE); hc.setRequestMethod(HttpConnection.POST); hc.setRequestProperty("Content-Type","application/x- www-form-urlencoded"); String id = "ID=" + t1.getText() ; String pass = "&PASSWORD=" + t2.getText() ; //サーバに渡すパラメータ(ID、パスワード)の書き込み os = hc.openOutputStream(); os.write(id.getBytes()); os.write(pass.getBytes()); os.close(); //サーバと接続 hc.connect(); //サーバからの出力結果を受け取るバイト配列 byte[] result = new byte[(int)hc.getLength()]; is =hc.openInputStream(); is.read(result); //サーバからの結果を読み込む } catch (Exception e){ //エラー内容をダイアログで表示 Dialog d = new Dialog(Dialog.DIALOG_ERROR, "ERROR!!") ; d.setText(e.getMessage()) ; d.show() ; } finally { try{ if(is!=null)is.close(); } catch (Exception e) { } try{ if(os!=null)os.close(); } catch (Exception e) { } try{ if(hc!=null)hc.close(); } catch (Exception e) { } } } ここで、少し質問があります。 サーバー側から送られてくるデータがバイトによる配列ですので 受け取ったデータの区切りの判断はどのようにすればいいのでしょうか? それともループ処理を使って 1回目は名前、2回目は写真データというような処理に なるのでしょうか? すいませんが宜しくお願いします。

その他の回答 (1)

  • ryo-_-3
  • ベストアンサー率14% (2/14)
回答No.1

はじめまして。こんにちは。 iアプリとサーバとの通信のイメージですが、普通のHTTP通信と変わらないので 携帯からwebサーバにリクエストをかけると、レスポンスが携帯に返ってきます。 なので、1.~3.までの処理は一連の動作と考えられます。 2.HttpConnectionクラスなんかを使って接続を行います。 > webサーバー側の要求を感知して通信を開くのでしょうか?  Webサーバは接続を待っているだけですのでWebサーバにはこちらからリクエストを投げないと何も起きません。 > またweb側はどのようにして携帯へ通信の要求を発行すればいいのでしょうか  上の説明の通りなので、web側から通信の要求は出来ません。  なので、iアプリから通信を開始する必要があります。 iアプリ 通信 とかで検索かけるとサンプルが出てきますので 参考にしてみて下さい。

hideaboo
質問者

お礼

ありがとうございます。 webサーバーからの要求は出来ないんですね。 すいません無知なもので...。 逆に、iアプリからデータを受けたwebサーバーの処理ってどのようになるのでしょうか?

関連するQ&A