1

現在の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;
    }

これはこれを行うための正しいアプローチですか?

4

0 に答える 0