現在のAndroidプロジェクトでokhttpとokioを使用して、送信しているバイナリストリームを取得して読み取ります。ストリーム内で、メソッドを使用していくつかのUTF値を送信しています
DataOutputStream.writeUTF().
「okhttp」は2つのオプションを提供し、inputStreamを取得するため、メソッドDataInputStream.readUTF()を直接使用できます。
もう 1 つのオプションは、ストリームを BufferedSource として取得し、そのメソッドを使用してデータを読み取ることです。UTF を読み取るメソッドでは、バイト数を指定する必要があることに驚きました。
String readUtf8(long byteCount)
サーバーからのUTFを読み取るために、次のメソッドを追加しました
public static String readUtf(BufferedSource bufferedSource)throws IOException {
int length = readShortAsUnsignedInt(bufferedSource);
return bufferedSource.readUtf8(length);
}
public static int readShortAsUnsignedInt(BufferedSource bufferedSource)throws IOException {
return bufferedSource.readShort() & 0xffff;
}
これはこれを行うための正しいアプローチですか?