コネクションを使いまし??? au携帯でオープンアプリで通信のテスト

このQ&Aのポイント
  • au携帯でオープンアプリで通信のテストを行っています。HTTP GETメソッドの実行方法と、コネクションの使いまわしについて詳しく教えてください。
  • au携帯でオープンアプリで通信のテストを行っています。通信許可を求めるダイアログが表示されますが、コネクションを使いまわす方法を教えてください。
  • au携帯でオープンアプリで通信のテストを行っていますが、異なるURLについての処理の方法がわかりません。どうすれば良いでしょうか?
回答を見る
  • ベストアンサー

コネクションを使いまし??? au携帯でオープンアプリで通信のテスト

au携帯でオープンアプリで通信のテストをしています。 HTTP GETメソッドを実行する には以下のようにすれば良いのですが、 下のreadHttpConnection関数を呼び出すごとに、 通信確認 このオープンアプリは通信を行おうとしています。 通信を許可しますか? ●許可する ○許可しない となります、以前の質問でコネクションを使いましをすれば、最初の1回で済むと回答を得ましたが、どのように使いまわしをすればそうなるのかわかりません。 conn = (HttpConnection)Connector.open(url, Connector.READ, true); ここに入力するURLは、毎回異なるため(例えば http://test?s=1http://test?s=2 など) どうしたらよいのでしょうか? //=== ソース === int readHttpConnection(String url, byte[] data) throws Exception { HttpConnection conn = null; InputStream in = null; int i, length = 0; try { conn = (HttpConnection)Connector.open(url, Connector.READ, true); conn.setRequestMethod(HttpConnection.GET); in = conn.openInputStream() ; while((i = in.read(data, length, data.length - length)) > 0) length += i; } catch(Exception ex) { } finally { if(in != null) in.close(); if(conn != null) conn.close(); } return length; }

  • Java
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • bgbg
  • ベストアンサー率53% (94/175)
回答No.1

結論から言うと不可能です。 OAPはHTTP通信のみ可能で、HTTPは仕様上コネクションを張りっぱなしで相互通信はできません。

関連するQ&A

  • iアプリとサーブレットの連動(eclipse)

    はじめまして、java初心者の者です。 現在私は、eclipseを使って、iアプリ開発に挑戦しています。 その中で、iアプリとサーブレットを連動させる方法が分からず、困っています。 iアプリ上の画面で、aと入力してサーブレットに送ると、サーブレットでテキストデータを書き換え、Aに変更して送り返すという、本当に初歩的な動作を試したいのですが、上手く連動してくれません。 ネット上のサンプルソースを丸写しで使っても動かないため、おそらく設定やファイルの置き場所、接続先の記述などに問題があるのだと思います。 インターネット等でいろいろと情報を集めてみたのですが、そもそもeclipseの中でDoJaプロジェクトを作成した場合、サーブレットを使うにはどのような設定が必要なのか、またデータはどのフォルダへ保存するべきなのかといった基礎的な情報が収集できず、困っています。 tomcatプロジェクトを作成し、その中でjspとサーブレットを連動させるテストは成功したのですが、DoJaプロジェクトではweb.xmlファイルを作らなくていいのか?など、本当に基礎的な部分が全く理解できていません・・・。 また、以下がネット上で拾ったサンプルコードです。 同じフォルダにあるサーブレット(Test)と連動させたいと思っているのですが、下記に何か間違いはないのでしょうか? ---------------------------------------------------------------- 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=a"); 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; } } --------------------------------------------------------------- 本当に基礎的な質問で申し訳ありません。 どなたかご存知の方がいらっしゃいましたら、何卒よろしくお願いいたします。 ※以下、私の環境をお伝えいたします。 ・eclipse3.1 ・DoJa-5.1 ・apache-tomcat-6.0.20

    • ベストアンサー
    • Java
  • dojaのHTTP通信時Exception

    iアプリでアプリの開発を行っています。 開発環境はdoja5.0+eclipse3.1を使用しております。 HTTP通信によりサーバにバイナリデータを送信したいのです ADFの設定はPackageURL及びUseNetworkを設定しております。 localhostでエミュレータでテストしているため PackageURLは「http://localhost:80/dictionary.jar」と設定しています。 以下のソースコードをデバッグ起動すると「httpCon.connect();」にて exceptionが発生して、「Illegal connection object state」のいう メッセージがかえってきます。 以下はHTTP通信部分のソースです。 どうか知恵をお貸しください。 よろしくお願いいたします。 // URLを作成する String url = IApplication.getCurrentApp().getSourceURL() + "getScore.php"; StringBuffer reqMsg = new StringBuffer(); DataInputStream fromStream = null; DataOutputStream toStream = null; HttpConnection httpCon = null; try {   // HTTP接続処理   httpCon = (HttpConnection)Connector.open(url, Connector.READ_WRITE, true);   httpCon.setRequestMethod(HttpConnection.POST);   httpCon.setRequestProperty("Content-Type", "application/x-xpinstall");   //送信データ元(スクラッチパッド頭8000バイト分)   fromStream = Connector.openDataInputStream("scratchpad:///0;pos=0,length=8000");   //送信データ先   toStream = httpCon.openDataOutputStream();   byte[] buff = new byte[8000];   fromStream.read(buff);   toStream.write(buff);   //http接続   httpCon.connect();←ここでException

    • ベストアンサー
    • Java
  • [iアプリ][実機で通信エラー]com.nttdocomo.io.ConnectionException

    エラーが発生する状況を以下に示します。 *doja3.0などエミュレーター上では正常に動作しました。 *実機D506iで実行するとエラーが発生。 *cgiはperlで作成し http://isweb.www.infoseek.co.jp/ のiswebライト(無料)サーバーに置いています。 プログラムの概要は下記アドレスへscore=30000とid=abcdeのデータをcgiへ送り、ランキング情報を取得するプログラムです。 //----------------以下通信プログラムの一部-------- HttpConnection con = null; String url = IApplication.getCurrentApp().getSourceURL() + "/cgi-bin/test/test3.cgi?score="30000"&id=abcde"; con = (HttpConnection)Connector.open(url, Connector.READ, true); con.setRequestMethod(HttpConnection.GET); try{ con.connect(); }catch (com.nttdocomo.io.ConnectionException e) { System.out.println("status=" + e.getStatus()); con.close(); } ------------------------以下省略------------------- con.connect();でエラーが発生し、トレース情報には status=10 という結果が表示されます。 http://acerola.org/motokazu/iap/manual/Doja4.0/com/nttdocomo/io/ConnectionException.html#HTTP_ERROR 上記アドレスを見てみたのですが、結局何が原因で何を改善したら良いのか分からない状態です。 他に必要な情報などがありましたら言っていただければ思います。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • Java
  • DoJa5.1でiアプリを作っています。

    DoJa5.1でiアプリを作っています。 サーバー上のテキストファイルの内容を、スクラッチパッドに保存しようとしています。 サーバ(さくらのレンタルサーバ)がcontentLengthを返していないようで、 うまく動作しません。 サーバ上のテキストファイルはサイズが一定ではありません。 contentLengthを取得する方法、または別の解決方法があったら教えてください。 よろしくお願いします。 HttpConnection http = null; InputStream in = null; data = null; try{   http = (HttpConnection)Connector.open("http://xxxxx.sakura.ne.jp/cgi-bin/xxxxx.cgi", Connector. READ);   http.setRequestMethod(HttpConnection.GET);   http.setRequestProperty("Content-Type","text/plain");   http.connect();   int contentLength = (int)http.getLength();   in = http.openInputStream();   // textbox.setText(Integer.toString(contentLength));   // contentLengthの値を確認したらなにもない(空欄のまま)   // ちなみに、5行まえの「http.setRequestProperty("Content-Type","text/plain");」   // をコメントアウトすると、contentLengthは「-1」になりました。   // data = new byte[contentLength];   // contentLengthが取得できないので、ここでエラーになる   // in.read(data); } catch... サーバ上のCGIです。 -------------------------------------------------------------- #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "test"; --------------------------------------------------------------

    • ベストアンサー
    • Java
  • iアプリでのHTTP通信について

    こんばんわ。大変困っています。 現在、iアプリで業務アプリの開発を行っています。 HTTP通信によりサーバ上のテキストファイルを読み込もうとしているのですがどうもうまくいきません。 開発環境はdoja5.1+eclipse3を使用しております。 ADFの設定はPackageURL及びUseNetworkを設定しております。 この状態で以下のソースコードをデバッグ起動すると「httpc.connect();」にてConnectionExceptionが発生し、statusの値は0です。 APIリファレンスを参照しても「UNDEFINED:未定義の例外を表します」とあり、何のこっちゃわかりません。 どんな情報でもいいので宜しくお願いいたします。 以下はHTTP通信部分のソースです。 public String HttpGetTest(){ String strRet=""; try { HttpConnection httpc = (HttpConnection)Connector.open(getSourceURL()+"test.txt",Connector.READ,true); httpc.setRequestMethod(HttpConnection.GET); httpc.connect(); int respCode=httpc.getResponseCode(); String respMsg=httpc.getResponseMessage(); long contentLength=httpc.getLength(); if (respCode == HttpConnection.HTTP_OK) { byte rcvData[] = new byte[(int)contentLength]; InputStream ips=httpc.openInputStream(); ips.read(rcvData); ips.close(); strRet = new String(rcvData); } httpc.close(); }catch(ConnectionException ce){ Dialog dlgWarning = new Dialog(Dialog.DIALOG_ERROR,"ConnectionException"); dlgWarning.setText(ce.toString() + ":" + ce.getStatus()); dlgWarning.show(); } catch(Exception e){ Dialog dlgWarning = new Dialog(Dialog.DIALOG_ERROR,"Exception"); dlgWarning.setText(e.toString()); dlgWarning.show(); } return strRet; }

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について(再度)

    逆コンパイル(JAD)で以下のようになります。 if(resultP.getRs().next()) {をどう処置するかが問題だと思いますが、如何せん実力不足です。break MISSING_BLOCK_LABELが複数あるので色々 やってみなしたが駄目です。 アドバイス下さるよう御願い申し上げます。 private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); if(resultP.getRs().next()) { break MISSING_BLOCK_LABEL_51; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentContent(resultP); if("sch".equalsIgnoreCase(srcform.getContentType())) { break MISSING_BLOCK_LABEL_107; } resultT = daGetParentToUser(conn); if(resultT.getRs().next()) { break MISSING_BLOCK_LABEL_102; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentToUser(resultT); DBResult resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } srcform.setFocusElement(null); obj = srcform; DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); Exception exception; exception; DBUtil.closeConnection(conn); throw exception; } 何卒宜しく御願い致します。

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について(再度)

    もう一度だけ教えて下さい御願いします。逆コンパイルをした結果が読めません。どうのようにに読めばいいでしょうか、同様の修正を行いたいと思います。 private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); if(resultP.getRs().next()) { break MISSING_BLOCK_LABEL_51; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentContent(resultP); if("sch".equalsIgnoreCase(srcform.getContentType())) { break MISSING_BLOCK_LABEL_107; } resultT = daGetParentToUser(conn); if(resultT.getRs().next()) { break MISSING_BLOCK_LABEL_102; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentToUser(resultT); DBResult resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } srcform.setFocusElement(null); obj = srcform; DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); Exception exception; exception; DBUtil.closeConnection(conn); throw exception; } 気張ってはいるのですが、もう一度ご指導願います。

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について(再度)

    askaaska`様 コンパイルまでは出来ましたが実行段階で不調です。やみくもにやっているのでご迷惑をお掛けしているのは重々承知しています。恐らくこのプログラムからJSPを実行してWebに表示しているものと考えられます。残念ながら画面が遷移しません。このプログラムだけです、あとは無理やり直しました。邪道とは思いますが方法がありません。 public class TranslationEntryBL { private final String STR_ARRAY[]; private TranslationEntryForm srcform; private TranslationEntryBL() { STR_ARRAY = new String[0]; srcform = null; } public TranslationEntryBL(TranslationEntryForm srcform) { STR_ARRAY = new String[0]; this.srcform = null; this.srcform = srcform; } public GenericApplicationForm init() throws Exception { initCommonInfo(); if(srcform.getParentContentID().equalsIgnoreCase(srcform.getSelectContentID()) && !"scx".equalsIgnoreCase(srcform.getContentType())) { srcform.setFocusElement("entryTitle-1"); } else if(srcform.getEntryContent().length > 0) { srcform.setFocusElement("entryContent"); } else { srcform.setFocusElement(""); } return prepareContentData(); } public GenericApplicationForm refresh() throws Exception { return init(); } public GenericApplicationForm returnList() throws Exception { TranslationListForm nextform = new TranslationListForm(srcform); nextform.setEventName("init"); return nextform; } private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); // kokomade okay if(resultP.getRs().next()) { // kokomade okay obj = returnList(); DBUtil.closeConnection(conn); // kokomade okay return ((GenericApplicationForm) (obj)); // kokodetomaru } setParentContent(resultP); resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } try { srcform.setFocusElement(null); obj = srcform; } catch (Exception exception) { DBUtil.closeConnection(conn); throw exception; } DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); } return ((GenericApplicationForm) (obj));のところで処理が止まります。何かアドバイスを下さい御願いします。尚、止まると判断しているのはBEEP音を入れてどこまで動いたかを確認したものです。 最早、専門家でないと出来ない領域かと思いますが、何卒宜しく御願い致します。

    • ベストアンサー
    • Java
  • javaのエンコードについて?

    さまざまなホームページを探して、下記のプログラムでホームページの情報は読み取ることができるようになったのですが、文字化けを起こして見ることができません。 何をどうすれば文字化けを防げるのかまったくわかりません。 ご存知の方、おしえていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.yahoo.co.jp/"); in = new BufferedReader(new InputStreamReader(url.openStream())); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java
  • javaのエンコードについて?

    下記のプログラムでホームページの情報は読み取ることができるようになったのですが、一部ホームページ(UTF-8エンコードのホームページと思われる)、文字化けを起こして見ることができません。 解決する方法を、教えていただけないでしょうか? おねがいいたします。 import java.io.*; import java.net.*; class test{ public static void main(String[] args) throws Exception { URL url = null; BufferedReader in = null; String readString = null; url = new URL("http://www.faireal.net/"); in = new BufferedReader(new InputStreamReader(url.openStream(),"JISAutoDetect")); while((readString=in.readLine())!=null) System.out.println(readString); in.close(); } }

    • ベストアンサー
    • Java

専門家に質問してみよう