2

アプリにデータを表示できるように、インターネット接続を必要とするアプリケーションを 1 つ作成しました。

しかし、Nokia c1-01 でそのアプリをテストすると、サーバーからデータを取得できません。同時に、他のデバイスでアプリをチェックすると、インターネットに簡単に接続され、アプリが表示されます。

これが私のコードです:

    HttpConnection httpConn = null;

    InputStream is = null;
    OutputStream os = null;
    StringBuffer sb = new StringBuffer();

    try {
        // Open an HTTP Connection object
        httpConn = (HttpConnection) Connector.open(url);
        // Setup HTTP Request to POST
        httpConn.setRequestMethod(HttpConnection.POST);

        httpConn.setRequestProperty("User-Agent",
                "Profile/MIDP-2.0 Confirguration/CLDC-1.1");
        httpConn.setRequestProperty("Accept_Language", "en-US");
        //Content-Type is must to pass parameters in POST Request
        httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        os = httpConn.openOutputStream();



        os.write(params.getBytes());

        /**Caution: os.flush() is controversial. It may create unexpected behavior
        on certain mobile devices. Try it out for your mobile device **/
        //os.flush();
        // Read Response from the Server
        //StringBuffer sb = new StringBuffer();
        is = httpConn.openDataInputStream();
        int chr;
        while ((chr = is.read()) != -1) {
            sb.append((char) chr);
        }
    } finally {
        if (is != null) {
            is.close();
        }
        if (os != null) {
            os.close();
        }
        if (httpConn != null) {
            httpConn.close();
        }
    }

Nokia C1-01 で実行できるようにするには、コードで何を変更する必要がありますか?

4

1 に答える 1

0

2つのことが頭に浮かびます。

最初のものは些細なことであり、電話のインターネット設定と関係があります。Nokia C1については特に知りませんが、多くのデバイスには、デバイス用のインターネット設定とJava用の別のインターネット設定があることは知っています。Javaのインターネット設定が正しいことを確認してください。電話でブラウザを使用できるからといって、インターネット接続がJavaMIDletで機能するわけではありません。

次に調べることができるのは、Content-Typeプロパティと関係があります。

この問題は、サーバー上のPHPを介してハイスコアを取得してWebサーバーに送信するゲームを開発しているときに発生しました。ほとんどのテストフォンで問題なく動作するのはかなり奇妙だと思いましたが、いくつか問題がありました。

電話が受信したデータを出力すると、404応答が明らかになりました(または同様の何か、それはしばらく経ちました)。

別のJavaME開発者に相談した後、私はこれを学びました。

一部のデバイスは、特定の指示をWebサーバーに送信します。「こんにちは。data.phpからtext/plainタイプのデータを送ってください」。data.phpにheader('Content-type:text / plain')が含まれている場合は、すべて問題ありません。そうでない場合、サーバーは「申し訳ありませんが、そのアドレスにはテキスト/プレーンテキストがありません」と応答します。

一部のデバイスのみがその特定の要求を送信するため、これは一部のデバイスでのみ発生します。

したがって、JavaME部分のsetRequestProperty()で定義するContent-Typeは、サーバー側スクリプトでも同じである必要があります。

これら2つのことのいずれかが役立つことを願っています。:-)

于 2012-10-19T11:27:32.577 に答える