最近,遇到一个很奇怪的问题,一个android的项目,竟然登陆不了,之前可以正常登陆,当时我们的实施在上海使用移动的网络登陆平台,发现请求失败,连接服务器错误,后来,我在公司试了一下,明明是可以的,大家也都试试,都是可行的,于是就没管了,理所当然的认为是他的问题。当时我们是在无线网的环境中登陆的。
后来他从上海回来了,在公司登陆,还是好好的,中午去吃饭,他又登陆了,这时~~~~~问题来了,在移动数据下无法登陆,大家都是,这个时候我就纳闷了,晚上回去后,屋里的无线网也是可以登陆的,这就很不理解了
于是,昨天下午好好看了一下网络请求,在debug模式下跑了很多次,使用无线网没问题,网络是200,但是当切换到移动或者电信4g的时候就会报错网络错误404或者5**,尽管百度了很久还是没有什么有价值的参考,仅仅看到有人说电信卡请求时,读取xml文件时会多出空格,还有会自动解压gzip文件,虽然和我的问题相差很多,但是多少有点进展了,接着漫无目的的百度,忽然看到接入点的字样,于是把移动卡作为流量卡NET 切换为WAP,这个时候就可以登陆了,电信卡NET切换为WAP,这个时候就可以正常登陆,大家一切换发现都可以了,此时问题才来了,为什么会这样呢?~~~~~
后来百度就可以直接点了,于是得到一些有价值的参考
&: 在使用android做网络请求时,会遇上一个问题,当用户使用的是wap网络时,则需要为网络请求头加上代理地理和端口 号。 而使用wifi或者cmnet网络连接时,不用设置代理地址和端口号。
(1) 手机发出请求;
(2) 移动网络(gsm、cdma或其它移动网络)接通本地isp;
(3) 本地isp连接wap网关服务器;
(4) wap网关服务器向目标内容服务器发出请求;
(5) 目标内容服务器将信息传给wap网关服务器;
(6) wap网关服务器将处理后的信息发送到本地isp;
(7) 本地isp将住处传回移动网络;
(8) 手机接收到internet信息;
按照这个原理,那我就可以理解为什么设置为WAP后就可以正常登陆了,也就是说使用WAP以后,就会先通过WAP的代理然后到WAP的服务器做了请求处理,这就可以正常登陆了
但是~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
还有人遇到过和我刚好相反的问题,偏偏是WAP不行
https://blog.csdn.net/miemie1320/article/details/18734343
这个给出了设置方案,可我的好像完美的跳过了,哎
为什么wifi情况下也可以呢?这就解释不通了,于是我开始用
String proxy = Proxy.getDefaultHost();
int port = Proxy.getDefaultPort() == -1 ? 80 : Proxy.getDefaultPort();
获得当前代理和端口却发现
/**
* 电信net和 wap 代理为空
* 端口:80
*
* 移动
* net 代理为空
* 端口:80
* wap 代理 10.0.0.172
* 端口:80
*
* wifi
* 代理:空
* 端口:80
*/
这不就尴尬了
因为这个大家都知道的:
移动和联通的WAP代理服务器都是10.0.0.172,端口号是80;
而电信的WAP代理服务器是10.0.0.200,端口号是80。
那我为什么除了移动WAP有代理别的都没有呢?
到了这里我就无计可施了,如果有大佬看到,希望能解说一下,或者点拨一下,让我不再迷茫哎