使用Volley发起二次网络请求时持续触发Bad URL错误求助
解决Volley第二次请求报
Bad URL的问题 我帮你梳理下这个问题的核心原因和解决办法:
问题根源
你给出的URL里包含了&,这是HTML中&的转义字符,但Volley的URL解析器只识别原始的&符号。当它看到&时,会判定这是非法的URL格式,所以抛出了Bad URL错误。至于"第二次请求才出现",大概率是第一次请求后URL被意外做了HTML转义处理,导致第二次使用时带上了转义后的错误字符。
具体解决方案
- 修正URL格式:把URL里的
&直接替换成&,还原成符合HTTP规范的原始URL - 避免重复转义:如果这个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
相关产品推荐
相关产品推荐

