做个天气预报的demo,网上查到中国天气网的API,其中http://m.weather.com.cn/data/101020100.html这个地址可以在pc上的浏览器直接访问,得到一个json的数据。一般这样的请求在Android上直接传url进去,用get的方式请求就可以得到json的数据了。可是我这就是连接不上,log就是简单的超时。我觉得应该是二级域名无法解析,因为还有两个API,是顶级域名的,直接就可以get到数据,这个不行。但是为什么在pc上就可以呢。
org.apache.http.conn.ConnectTimeoutException: Connect to /61.4.185.34:80 timed out
跪求大牛指教
------解决方案--------------------
代码里面调用的网址不正确的原因吧。
看你发上来出错提示的IP是:61.4.185.34,而你所说的那个网址的IP是:113.108.239.107
网址对应的IP与你出错提示的IP不同,估计是你代码里面调用的网址是另外一个。
------解决方案--------------------
权限加了吗?
------解决方案--------------------
建议你在模拟器上先试试看,模拟器和PC用的同样的网络,如果模拟器上也出错的话,那只能说是你代码有问题了。
另外建议代码检查一下,在Get之前用Log输出一下网址看是否正确。
------解决方案--------------------
你的手机网络好不好
------解决方案--------------------
帮你试过了,电信网络手机正常。
这种情况找运营商吧,据我所知国内某些地方的移动和联通运营商只允许用户上一些指定的网站。
------解决方案--------------------
你的http的timeout有没有设置好?我测试了一下,是可以访问并得到json数据的。
看看你的httpclient的设置。
CONNECTION_TIMEOUT_MS = 30 * 1000;
HttpConnectionParams.setConnectionTimeout(params, CONNECTION_TIMEOUT_MS);
HttpConnectionParams.setSoTimeout(params, CONNECTION_TIMEOUT_MS);
如果还不行,就是你的网络的问题了
------解决方案--------------------
手机网络不行,模拟器都行
只要电脑上能打开,就不会有问题
------解决方案--------------------
那为什么墨迹天气等一些weather widget可以呢?他们用的也是类似的方法吧?
楼主可以把代码贴出来,大家一起分析一下,也让大家一起学习,进步
------解决方案--------------------