Android --HttpURLConnection请求失败?

本文探讨了在Android应用中请求广告资源时遇到400错误的问题,并通过多种测试发现该错误与URL中的特定锚点标记有关。文中详细记录了使用不同HTTP客户端请求同一资源时的表现差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用android在请求广告资源的时候,返回给我400,我以为是服务的问题。
没太在意,可以后来用浏览器打开这个地址,发现浏览器返回的code是302,然后再跳一次跳转就可以跳转到200正常的界面。
所以很纳闷。
后来用URL进行请求,发现也能返回正常的code:200;

URL请求:
HttpURLConnection openConnection = (HttpURLConnection) u.openConnection();
int responseCode = openConnection.getResponseCode();
InputStream inputStream = openConnection.getInputStream();
System.out.println(responseCode);

Client请求:
HttpClient client=new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
int statusCode = response.getStatusLine().getStatusCode();

经过多次不同的测试,最终查明原因就是
http://m.shgene.net/#WZwenzi
中多了#WZwenzi的原因,
如果去掉#WZwenzi返回200正常。
暂时只能猜测我的org.apache.http的那个版本太低或者太高缘故。
这个包是存在于android中的,想换这个包估计不可能。
想每次请求的时候使用正则去掉#后面的,但是不确定#后面的是否会带有参数。

#在html中的作用是跳转到执行的位置,一个锚点的作用。
是可以去掉的,但是考虑到最终的广告商有可能通过JS检测是否具有这个锚点,所以最终采取的措施还是不去除这个锚点标记了。
#WZwenzi这样增加了这中锚点标记,确实有些httpClien不支持,这个还暂时不知道如何解决,暂时保留。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值