Как отправить байтовый массив из Web API в Android Cliend с помощью Retrofit - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь получить модель из веб-API для клиента Android с помощью модернизации.Одним из свойств этой модели является байтовый массив, который не анализируется.Вся модель возвращает ноль, если я включаю это свойство, иначе она возвращает модель с соответствующими данными.

Я уже пробовал это решение Как отправить байтовый массив [] в модификации , где они показывают, как отправить байтовый массив от клиента к серверу, но мне нужно прямо противоположное.

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете использовать этот вспомогательный класс для сериализации байтов

public class GsonHelper {
    public static final Gson customGson = new GsonBuilder().registerTypeHierarchyAdapter(byte[].class,
            new ByteArrayToBase64TypeAdapter()).create();

    // Using Android's base64 libraries. This can be replaced with any base64 library.
    private static class ByteArrayToBase64TypeAdapter implements JsonSerializer<byte[]>, JsonDeserializer<byte[]> {
        public byte[] deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
            return Base64.decode(json.getAsString(), Base64.NO_WRAP);
        }

        public JsonElement serialize(byte[] src, Type typeOfSrc, JsonSerializationContext context) {
            return new JsonPrimitive(Base64.encodeToString(src, Base64.NO_WRAP));
        }
    }
}

Кредиты для: Orip

...