java处理url_Java URL处理

近日在用HttpClient访问http请求时,为了省力,直接采用

HttpGet httpGet = new HttpGet(url);//HttpGet将使用Get方式发送请求URL

HttpResponse response;

response=client.execute(httpGet);

HttpEntity entity= response.getEntity();//从response中获取结果,类型为HttpEntity

前面几个接口调用都没问题,但这次却报如下错误:

java.net.URISyntaxException: Illegal character in query at index 55

查找了一些网上资料,说地址中涉及了特殊字符,如‘|’‘&’等。所以不能直接用String代替URI来访问,所以先把String转成URL,再能过URL生成URI的方法来解决问题。

URL的语法

URL与URI很像,两者的格式几乎差不多,但是我们接触的还是URL比较多,就以URL为例说明

URL提供了一种访问定位因特网上任意资源的手段,但是这些资源可以通过不同的方法(例如HTTP、FTP、SMTP)来访问,不管怎样,他都基本上由9个部分构成:

://:@:/;?#

scheme:获取资源使用的协议,例如http、ftp等,没有默认值

user:password:用户名与密码,这个是一个特殊的存在,一般访问ftp时会用到,他显示的表明了访问资源的用户名与密码。但是这个可以不写,不写的话可能会让你输入用户名密码

host:主机,访问那台主机,有时候可以是IP,有时候是主机名,例如www.baidu.com

port:端口,访问主机时的端口,如果http访问默认80,可以省略。

path:通过host:port我们能找到主机,但是主机上文件很多,通过path则可以定位具体文件。例如www.baidu.com/file/index.html。则path是/file/index.html,表示我们访问/file/index.html这个文件,他很像linux上的路径。

params:这个很少见,主要作用就是像服务器提供额外的参数,用来表示本次请求的一些特性。例如ftp传输模式有两种,二进制和文本,你肯定不希望使用文本形式传输二进制图片,这样你的图片下载下来后可能没法看了。为了向应用程序提供更丰富的信息,URL中有个专门的部分来表示这种参数。例如ftp://file.qiandu.com/pub/guid.pdf;type=d其中的type=d就是params

query:通过get方式请求的参数,例如:www.qiandu.com/index.html?username=dgh&passwd=123

fragment:例如www.qiandu.com/index.html#1。当html页面比较长时,我们通常会将其分为好几段,#1就可以 快速定位到某一段。

解决办法:

URL url = newURL(strUrl);

URI uri;

uri= new URI(url.getProtocol(), url.getAuthority(), url.getPath(), url.getQuery(), null);

//带端口 用Authority

HttpGet httpGet= new HttpGet(uri);//HttpGet将使用Get方式发送请求URL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值