私は、HTTPポストリクエストを介して.pngイメージをクライアントに送信しています。 .pngはsqlite3データベース内に格納され、blobとして取得され、これはすべて正常に動作します。返されたBLOBをディスクに保存してテストしたところ、期待どおりに開くことができます。私のクライアントがレスポンスを解釈すると、ペイロードの長さは16365から16367に伸びています。応答文字列を調べると、いくつかの余分な '?'HTTP経由でバイナリデータを受信
// request
URL url = new URL(targetURL);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", Integer.toString(parameters.getBytes().length));
conn.setRequestProperty("Content-Language", "en-US");
conn.setUseCaches(false);
conn.setDoOutput(true);
conn.getOutputStream().write(parameters.getBytes());
// response
Reader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
for (int c; (c = rd.read()) >=0;)
sb.append((char)c);
String response = sb.toString();
// this String is of length 16367 when it should be 16365
:プラグインのChrome ARCを使用してサーバをテストストリーム
で断続的に文字が応答が受信、私は私のクライアントのコードに問題があると信じてつながる右の長さ、であることが示されています
ここで間違っているものは何か飛び出していますか?注記生の画像データを使用するときは、どちらの側でも文字エンコーディングを行っていませんか?
どこでも同じエンコードを使用していますか(DBのblobエンコードを含む)ですか?一見するとエンコードの問題のように聞こえます... – Filip
@Filipは、エンコードの問題のように見えます。バイナリストリームをPNGイメージの場合は文字列として解釈するのはなぜですか? – cjungel
私はエンコーディングのチェックを絶対にしていません。 DBブロブは仕様通りのバイトであると思われますが、私はサーバとクライアントを同じエンコーディングを使用するように変更して何が起こるかを見てみます。 – Madden