学习《Android从入门到精通》14.1.2使用httpclient遇到问题
发表在Android图书答疑 2014-10-09
是否精华
版块置顶:
14.1.2使用httpclient访问网络,不带符号“_”的URL都能正常访问,遇到带有“_”符号的URL程序就出异常了,请问老师有什么方法解决?
分享到:
精彩评论 8
无语_mrkj
学分:3155 LV11
2014-10-09
沙发
您这里用的符号“_”是英文半角的吧,如果是,那么应该是可以的,您可以运行一下光盘中提供的实例14.3,这个实例的URLk就用了符号“_”,程序是可以运行的。
九拓_mrkj
学分:0 LV1
TA的每日心情
明天要更努力
2020-04-04 21:04:47
2014-10-09
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
您这里用的符号“_”是英文半角的吧,如果是,那么应该是可以的,您可以运行一下光盘中提供的实例14.3,这个实例的URLk就用了符号“_”,程序是可以运行的。
[/FIELDSET]

回复:老师,是英文半角的,14.1.2使用httpclient访问网络,14.3用的是webView,
想用httpclient访问网络得到网络源码,不是直接webView访问网站
但是用httpclient访问带有_符号的url就会出错
  
无语_mrkj
学分:3155 LV11
2014-10-09
地板
我说的是让您运行一下书中第422页的实例例14.3,不是第14.3节的实例。您可以看一下书中的第423页的第二行代码,这里的目标地址中就应用了“_”符号。如果这个实例不能正常那请您把您的开发环境的版本告诉我。
九拓_mrkj
学分:0 LV1
TA的每日心情
明天要更努力
2020-04-04 21:04:47
2014-10-09
4L

回复:
  是我大意了,没仔细看书中的例子也有带_符号的url。
老师书中例子的url运行正常,不闪退,但是运行这样的url就闪退了,,
public void send() {
String target = "http://hero_189hi_1.yytou.com:51921/gCmd.do?cmd=11&sid=gvhoj42hqcb6k91qp8nb2"; //要提交的目标地址
HttpClient httpclient = new DefaultHttpClient();//创建HttpClient对象
HttpGet httpRequest = new HttpGet(target); //创建HttpGet连接对象
HttpResponse httpResponse;
try {
httpResponse = httpclient.execute(httpRequest); //执行HttpClient请求
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
result = EntityUtils.toString(httpResponse.getEntity()); //获取返回的字符串
}else{
result="请求失败!";
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
开发环境:ADT-22.6.3
android-sdk_r22.6.2-windows
eclipse-java-kepler-SR2-win32
九拓_mrkj
学分:0 LV1
TA的每日心情
明天要更努力
2020-04-04 21:04:47
2014-10-10
5L
10-10 11:01:01.272: E/AndroidRuntime(9045): FATAL EXCEPTION: Thread-11083
10-10 11:01:01.272: E/AndroidRuntime(9045): Process: com.autoweb, PID: 9045
10-10 11:01:01.272: E/AndroidRuntime(9045): java.lang.IllegalArgumentException: Host name may not be null
10-10 11:01:01.272: E/AndroidRuntime(9045):  at org.apache.http.HttpHost.<init>(HttpHost.java:83)
10-10 11:01:01.272: E/AndroidRuntime(9045):  at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:497)
10-10 11:01:01.272: E/AndroidRuntime(9045):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-10 11:01:01.272: E/AndroidRuntime(9045):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
10-10 11:01:01.272: E/AndroidRuntime(9045):  at com.autoweb.MainActivity.send(MainActivity.java:387)
10-10 11:01:01.272: E/AndroidRuntime(9045):  at com.autoweb.MainActivity.read(MainActivity.java:357)
10-10 11:01:01.272: E/AndroidRuntime(9045):  at com.autoweb.MainActivity$3$1.run(MainActivity.java:215)
10-10 11:01:01.272: E/AndroidRuntime(9045):  at java.lang.Thread.run(Thread.java:841)
无语_mrkj
学分:3155 LV11
2014-10-10
6L
您上面的代码中指定的URL地址应该是不合法的地址,因为在注册域名时,是不能包括符号“_”的,只能是数字、字母或者减号-组成,但不能是下划线。
这里访问的必须是合法的URL地址,也就是可以正常访问的地址。
九拓_mrkj
学分:0 LV1
TA的每日心情
明天要更努力
2020-04-04 21:04:47
2014-10-10
7L
[FIELDSET][LEGEND]引自:6楼[/LEGEND]
您上面的代码中指定的URL地址应该是不合法的地址,因为在注册域名时,是不能包括符号“_”的,只能是数字、字母或者减号-组成,但不能是下划线。
这里访问的必须是合法的URL地址,也就是可以正常访问的地址。
[/FIELDSET]

回复:
  老师,这种域名可以用webView正常访问,用httpclient就不行,卡在这里过不去啦。


无语_mrkj
学分:3155 LV11
2014-10-11
8L
您这个域名是在互联网上注册成功的吗?我们没有注册成功带有下划线的域名。
另外,我在网上查了一下,RFC要求域名中不能带有下划线,但是大多数浏览器允许它,这也可能是使用webView可以访问的原因吧。
首页上一页 1 下一页尾页 8 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照