Android 截击 HTTPS Headers 抛出 400

Android Volley HTTPS Headers throws 400

我的应用程序已经 运行 一段时间了,一切都非常好! 服务器最近从 http 更新到 https, 自那次更改以来,我在每次服务器调用时都会收到 Error 400 BAD INPUT。 经过数小时的痛苦研究后,我发现如果我发送空 headers 的请求,则请求通过!没有错误。 但我需要那些 headers!

此外,在 iOS 和我在 POSTMAN 中的检查中,headers 都进行得很顺利,所以我认为问题一定出在客户端。

我正在发送我的 headers 覆盖 getHeaders 方法。

以前有人遇到过这个问题吗? 知道如何解决这个问题吗?

我的 headers 代码:

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
    HashMap<String, String> headers = new HashMap<String, String>();
    headers.put("Content-Type", "application/json; charset=utf8");
    headers.put("AppVersion", BaseApplication.getCurrentDevice().getAppVersion());
    headers.put("DeviceType", BaseApplication.getCurrentDevice().getDeviceType().toString());
    return headers;
}

好的,对于遇到此问题的任何人,这里有一个解释。

我进一步调查了我的问题,最后发现我的问题不是 headers!

我试图缩小它的范围,发现它只在 POST 请求 Body 上给我 400 错误。 显然在更改为 HTTPS 截击后发送空体。 我不明白为什么。

最后我发现了我的问题。 在 headers 中,我需要添加 "charset=utf-8" 是的,在上面的代码中我确实有字符集, 但我写了 "utf8",显然在 HTTPS 中它需要 "utf-8"!! 那个小小的“-”让一切变得不同!

同样,我的应用程序在没有那个“-”的情况下工作了 3 个月,没有问题,由于某种原因在更改为 HTTPS 后,utf8 需要更改为 "utf-8" !

希望对某人有所帮助。

您可以在 link:

中找到有关此问题的更多详细信息

http://envyandroid.com/android-volley-empty-parameters/

JozeRi