0

Web ページの応答からさまざまな種類のエンコーディングを読み取ることができるプログラムを作成しようとしています。現在、AMF データの応答を正常に読み取る方法を見つけようとしています。送信は問題ありません。私の HttpWrapper では、応答文字列を問題なく取得できますが、多くの文字が変換中に失われます。そのために、応答をバイトとして受け取り、読み取り可能なテキストに変換しようとしています。

私が得ている大きなことは、文字通り、文字が翻訳で失われることです. Charles 3.8.3 と呼ばれるプログラムを使用して、16 進法と AMF 法の両方で、応答に何が表示されるかを理解するのに役立てています。通常の文字に関しては通常は問題ありませんが、Unicode 以外の文字が表示されると、常に「ef bf bd」と表示されます。HTTP 応答を読み取るための私のコードは次のとおりです。

BufferedReader d = new BufferedReader(new InputStreamReader(new    DataInputStream(conn.getInputStream())));
while (d.read() != -1) {
String bytes = new String(d.readLine().getBytes(), "UTF-8");
    result += bytes;
}

次に、次のように16進数に変換しようとします。

for (int x = 0; x < result.length(); x++) {
    byte b = (byte) result.charAt(x);
    System.out.print(String.format("%02x", b & 0xFF));
}

私の出力は次のとおりです。

私はこれを解決する方法について頭が痛いので、どんな助けも大歓迎です! お時間をいただきありがとうございます

4

2 に答える 2

1

あなたのコードは、すべてのストリームが UTF-8 エンコーディングを使用することを前提としています。これは単に正しくありません。content-type 応答ヘッダー フィールドを検査する必要があります。

于 2014-06-21T06:25:44.353 に答える