Android Pixel 2发送了错误的Content-Type或内容

时间:2018-12-12 19:04:39

标签: android okhttp

我们在项目中使用okhttp来向我们的Io​​T设备发送发布请求。此代码适用于我们拥有/测试的Google像素除外的所有设备,由于某种原因,每次都会失败。

我们的固件开发人员似乎认为发生了什么事,是电话在说“我正在向您发送长度为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 :(得分:0)

我建议检查后端代码是否有限制。尝试查找并修复后端配置文件。后端使用哪种语言编写?