0

Balckberry モバイル アプリケーションに取り組んでいます。java.io.OutputStreamいくつかのデータを取得し、オブジェクトを使用してサーバー アプリケーションに投稿しjavax.microedition.io.Connectionます。「Content-Type」プロパティを設定してConnectionいますが、サーバー側で正しいエンコードされた文字列を取得できません

その点に注意してください:

  • Posterを使用して確認したように、サーバーはUTF-8エンコードされた文字列で正常に動作します
  • OutputStreamXML は、デバッグ モードで確認できるように、書き込む前にクライアント側で正しくエンコードされています。

誰でもグリッチを見つけることができます 以下はコードです。

            // Client side code

            // xml is String xml and is correctly encoded, I can see Arabic or Chinese character it in debug mode
            byte[] requestByte = xml.getBytes();

            // compress request bytes array
            // initialize connection

            // set connection properties
            con.setRequestMethod(HttpConnection.POST);
            con.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            con.setRequestProperty("Content-Encoding", "UTF-8");

            os = con.openOutputStream();
            InputStream in = new ByteArrayInputStream(requestByte);
            byte[] buffer = new byte[4096];
            int bytesRead = 0;
            while ((bytesRead = in.read(buffer)) > 0) {
                os.write(buffer, 0, bytesRead);
            }
4

1 に答える 1

2

いくつかのこと:

1)あなたがxmlと呼んでいる変数は、実際には文字列であると思います。その場合、あなたが実際に欲しいのは

byte[] requestByte = xml.getBytes("UTF-8");

2) ここには冗長なコードがあるようです:

        InputStream in = new ByteArrayInputStream(requestByte);
        byte[] buffer = new byte[4096];
        int bytesRead = 0;
        while ((bytesRead = in.read(buffer)) > 0) {
            os.write(buffer, 0, bytesRead);
        }

これをすべて次のものに置き換えてみませんか。

os.write(requestByte, 0, requestByte.length);

于 2013-08-26T15:55:05.077 に答える