You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Volley发起二次网络请求时持续触发Bad URL错误求助

解决Volley第二次请求报Bad URL的问题

我帮你梳理下这个问题的核心原因和解决办法:

问题根源

你给出的URL里包含了&,这是HTML中&的转义字符,但Volley的URL解析器只识别原始的&符号。当它看到&时,会判定这是非法的URL格式,所以抛出了Bad URL错误。至于"第二次请求才出现",大概率是第一次请求后URL被意外做了HTML转义处理,导致第二次使用时带上了转义后的错误字符。

具体解决方案

  1. 修正URL格式:把URL里的&直接替换成&,还原成符合HTTP规范的原始URL
  2. 避免重复转义:如果这个URL是从HTML页面或接口返回的,获取后要先做转义还原再存储,防止后续请求时重复处理

修正后的示例代码

try {
    RequestQueue queue = Volley.newRequestQueue(getActivity());
    // 替换&为&,修复URL格式问题
    String fixedUrl = "http://27.67.80.6:18080/154.m3u8?AdaptiveType=HLS&VOD_RequestID=U6tIRX+QtmFBXhLTgqa7ueyBtmHx5QAI3mRpdZ2Q7ux7K53vZQMpmfIQhMqTkuSfjDtGu7YlgP0t/EorYPdiLw==";
    StringRequest sr = new StringRequest(Request.Method.GET, fixedUrl, 
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // 这里写你的响应处理逻辑
            }
        }, 
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                // 这里写你的错误处理逻辑
            }
        });
    queue.add(sr);
} catch (Exception e) {
    e.printStackTrace();
}

额外验证小技巧

  • 可以先把修正后的URL放到浏览器里打开,确认能正常访问,排除服务器端的问题
  • 如果是动态生成的URL,建议每次发起请求前用URLDecoder.decode(url, "UTF-8")做一次解码,确保URL格式始终正确

内容的提问来源于stack exchange,提问作者Nam Hoang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:32:57