使用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不支持,这个还暂时不知道如何解决,暂时保留。