2

J2ME で 1 つの単純なアプリケーションを開発しました。アプリケーションは単純HttpConnectionで、リクエストのみを行うだけです。そのためのコードは次のとおりです。

 public void run() {
    System.out.println("Inside saveData");
    HttpConnection hc = null;
    OutputStream dout = null;
   try {
        System.out.println("custName = " + custName);
        System.out.println("prodName = " + prodName);
        System.out.println("qty = " + qty);

        hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName=" + custName + "&prodName=" + prodName + "&qty=" + qty);
        //hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName=Custtt51&prodName=Proddd52&qty=53");
        //hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName="+custName+"&prodName="+prodName+"&qty="+qty);

        hc.setRequestProperty("User-Agent", "Profile/MIDP-2.1 Configuration/CLDC-1.1");
        hc.setRequestMethod(HttpConnection.GET);
        dout = hc.openOutputStream();

    } catch (Exception e) {
        System.out.println("Error... = " + e);
    } finally {
        try {
            if (dout != null) {
                dout.close();
            }

            if (hc != null) {
                hc.close();
            }
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }

これは、PC (シミュレーター) では問題なく動作します。しかし、Nokia 5310 に .jar ファイルをデプロイすると、HttpConnection から何も返されません。

実際、URLからデータを受け取りたくありません。自分の URL にリクエストを送信したいだけです。それ以外の場合は、その URL のみで実行されます... 私のアプリケーションは Nokia 3110 Classic で正常に動作します。しかし、Nokia 5310 では動作しません。何か提案はありますか?

4

3 に答える 3

1

問題は、一部の実装では、connection.getResponseCode() メソッドを呼び出すまでアプリケーションがリクエストを送信しない場合があることです。InputStream または OutputStream を開く前に getResponseCode() メソッドを呼び出してみてください

于 2009-08-25T16:04:18.580 に答える
1

出力ストリームではなく、接続の入力ストリームを使用する必要があります。このような何か(未テスト)。

    if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
        int length = (int)hc.getLength();
        InputStream is = hc.openInputStream();
        content = new byte[length];
        int read = 0;
        while (read < length) {
            int r = is.read(content, read, length - read);
            if (r < 0) {
                break;
            }
            read += r;
        }
        is.close();
    }
    hc.close(); 
于 2009-08-25T10:12:10.243 に答える
0

Nokia E シリーズ (E51) でも同じ問題があり、コードは Sun Simulator で完全に動作しますが、Application Manager でアプリケーション/MIDlets のデフォルト アクセス ポイントを設定してみてください。これにより、問題が解決する可能性があります。インストール -> アプリに移動します。マネージャー -> アプリ名を開き、設定を変更 -> アプリのアクセス ポイントを選択

于 2010-08-04T21:32:34.780 に答える