【问题标题】:Volley ServerError Code : 400 ONLY in Android 6 (Marshmallow)Volley ServerError Code : 400 ONLY in Android 6 (Marshmallow)
【发布时间】:2018-01-29 13:42:30
【问题描述】:

我正在使用 Android 中的 Volley 库执行一个简单的 GET 请求。最近我发现在 Android 6 (Marshmallow) 中我总是得到 onErrorResponse 回调,没有错误消息,但错误代码是 400。 我所有其他几乎相同的请求都可以在 Android 6 中完美运行。只有这个是有问题的。 当我将请求 URL 粘贴到浏览器中时,它可以工作。所以问题不在于服务器端。

我也尝试添加标题,但没有帮助。

【问题讨论】:

  • 不幸的是它对我没有帮助..我尝试添加自定义标题 X-Proxy-No-Redirect 的值:1 ,但它根本没有效果
  • 检查你在浏览器中得到的http代码
  • 在浏览器中没有错误代码,因为它在浏览器上完美运行。如果我将请求 url 粘贴到浏览器中,我会收到正确的响应。问题只出现在应用中
  • @BVtp 你解决了这个问题吗?

标签: android android-volley


【解决方案1】:

我也遇到了这个问题,问题不是内容类型。 对我来说,在 Android 7 及更高版本上,我使用的 URL 在浏览器上也能正常工作,但是当在 Android 6 上检查它时,它给我带来了你写的同样的问题。 这是因为您的网址可能包含空格。

分辨率:

String url = "http://your_url.com/file.php?data=" + sendJson;
url = url.replaceAll(" ", "%20");

问题就解决了!

【讨论】:

    【解决方案2】:

    我也使用 Volley 并且遇到了同样的问题。
    问题在于,在 Android 6.X Marshmallow 上,URL 参数 没有在 GET 请求上以 UTF-8 编码。不知道为什么...

    所以如果你发送一个像这样的 GET 请求

    http://example.com/api?key=my value
    

    http://example.com/api?place=café
    

    将按如下方式发送:

    在 Android 6.X 上

    http://example.com/api?key=my value
    http://example.com/api?place=café
    

    (返回:400 - HTTP_BAD_REQUEST)


    其他版本

    http://example.com/api?key=my+value
    http://example.com/api?place=caf%C3%A9
    

    (如果您的服务工作正常,返回:200 - HTTP_OK)


    所以,我的解决方法是调用

    URLEncoder.encode(value, "UTF-8");
    

    对于每一个参数。

    【讨论】:

      【解决方案3】:

      将 URL 中的空字符替换为“%20”。 字符串 url = "https://zxasd/asd"; url = url.replaceAll(" " , "%20");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 2020-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多