我的应用程序已经运行了一段时间,一切都非常好! 服务器最近从 http 更新到 https, 自那次更改以来,我在每次服务器调用时都会收到 Error 400 BAD INPUT。 经过数小时的痛苦研究后,我发现如果我发送带有空 header 的请求,则请求通过!没有错误。 但我需要那些标题!
此外,在 iOS 和我在 POSTMAN 中的检查中, header 都运行良好,所以我认为问题一定出在客户端。
我正在发送我的标题覆盖 getHeaders 方法。
有人遇到过这个问题吗? 知道如何解决这个问题吗?
我的标题代码:
@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;
}
最佳答案
好的,对于遇到此问题的任何人,这里有一个解释。
我进一步调查了我的问题,最后发现我的问题不是标题!
我试图缩小它的范围,发现它只在使用 Body 的 POST 请求上给我 400 错误。 显然在更改为 HTTPS 截击后发送空体。 我不明白为什么。
最后我发现了我的问题。 在标题中,我需要添加“charset=utf-8” 是的,在上面的代码中我确实有字符集, 但我写了“utf8”,显然在 HTTPS 中它需要“utf-8”!! 那个小小的“-”让一切变得不同!
同样,我的应用程序在没有那个“-”的情况下工作了 3 个月,没有任何问题,由于某种原因在更改为 HTTPS 后,utf8 需要更改为“utf-8”!
希望对某人有所帮助。
您可以在此链接中找到有关此问题的更多详细信息:
http://envyandroid.com/android-volley-empty-parameters/
乔泽里
关于Android Volley HTTPS header 抛出 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29486406/