Android Pixel 2 отправляет неверный тип контента или контент - PullRequest
0 голосов
/ 12 декабря 2018

Мы используем okhttp в нашем проекте для отправки почтового запроса на наше устройство IoT.Этот код работает для каждого устройства, которое у нас есть / test , за исключением для Google Pixel 2, по какой-то причине каждый раз происходит сбой.

Наш разработчик прошивки, кажется, думает, что телефон говорит«Я отправляю вам контент длиной 1100», но на самом деле отправляет только 1000 байтов.

Странно, что когда полезная нагрузка меньше, она работает, но когда она достигает определенной длины,перестает работать, опять же только на этом конкретном телефоне.

String json = ServiceGenerator.gson.toJson(registerRequest);
byte[] bytes = json.getBytes(Util.UTF_8);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), bytes);

Request request = new Request.Builder()
        .url(PROVISION_HOST + "/v2/prov/registration")
        .post(requestBody)
        .addHeader("Timestamp", timestamp)
        .addHeader("Auth-Hash", authHash)
        .build();

OkHttpClient client = new OkHttpClient();

client.newCall(request).enqueue(new okhttp3.Callback() {
    @Override
    public void onFailure(okhttp3.Call call, IOException e) {
        Log.e("REGISTRATION RESPONSE", call.toString());
    }

    @Override
    public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {
        Log.e("REGISTRATION RESPONSE", response.body().toString());
        nextStep();
    }
});

registerRequest это просто строка JSON.Согласно запросу, заголовок Content-Length соответствует фактической длине bytes.

Мы перепробовали так много вещей, и с трудом понимаем, что мы можем сделать, чтобы это исправить.Есть ли что-то, что мы делаем не так или это имеет смысл?

1 Ответ

0 голосов
/ 12 декабря 2018

Я предлагаю проверить, имеет ли внутренний код ограничение.Попробуйте найти и исправить файлы конфигов.На каком языке написано back-end?

...