【java】中常见的url问题及解决方案java基础教程

【java】中常见的url问题及解决方案java基础教程

ID:16777388

大小:25.31 KB

页数:3页

时间:2018-08-24

【java】中常见的url问题及解决方案java基础教程_第1页
【java】中常见的url问题及解决方案java基础教程_第2页
【java】中常见的url问题及解决方案java基础教程_第3页
资源描述:

《【java】中常见的url问题及解决方案java基础教程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、http://www.lampbrother.net【Java】中常见的URL问题及解决方案Java基础教程URL无处不在,不过似乎开发人员并没有真正地理解它们,因为在StackOverflow上经常看到有人在问如何正确的创建一个URL。想知道URL语法是如何工作的,可以看下总结的这篇文章,非常不错。本文不会深入介绍URL的全部语法,这是我们发布的一个用于正确地创建URL的Java库。问题1:Java的URLEncoder这个类不仅名字取的很差,而且它的文档上来第一句话就不太对头。Utilityc

2、lassforHTMLformencoding.你可能正纳闷为什么叫URLEncoder呢,看到这行就彻底无语了。现在你应该明白了,你没法通过这个类将一个URL串奇迹般地转化成一个安全,正确编码的URL对象,当然如果你没做足功课的话,这里有个小例子可以帮助你理解下。假设你有个HTTP的服务端点http://foo.com/search,它接受一个查询参数p,p的值就是要查找的字符串。如果你搜索"You&I"这个串的话,你第一次创建的搜索的URL可能是这样:http://foo.com/search

3、?q=You&I。这个当然没法工作,因为&是分隔查询参数name/value对的分隔符。如果你拿到这个错乱的URL串的话,你对它简直束手无策,因为首先你就没法正确的解析它。那好,我们来使用下URLEncoder。URLEncoder.encode("You&I","UTF-8")是结果是You+%26+I。这个%26解码之后就是&,而+号在查询串中代表的就是空格,因此这个URL是能正常工作的。现在假设你想使用你的查询串来拼接URL路径,而不是放到URL参数里面。很明显,http://foo.com

4、/search/You&I是错误的。不幸的是,URLEncoder.encode()的结果也是错的。http://foo.com/search/You+%26+I解码后会得到/search/You+&+I,因为+号在URL路径中是不会解析成空格的。URLEncoder或许能满足你的一些场景。但不幸的是,它这个过于通用的名字使得开发人员很容易误用它。因此最好的方法就是不要使用它,免得后面别的开发人员在你的基础上又使用了别的功能时犯错(除非,你真的是在进行"HTML表单编码")。问题2:GroovyH

5、ttpBuilder以及Java的URIHTTPBuilder是Groovy的一个HTTP客户端库。创建一个普通的GET请求非常简单:newHTTPBuilder("http://localhost:18080").request(Method.GET){uri.path="/foo"}这段代码会发送GET/fooHTTP/1.1到服务端(你可以运行nc-l-p18080之后再执行这段代码验证下)。otherstaffoftheCentre.Duringthewar,Zhuwastransferr

6、edbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenter

7、prisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersandhttp://www.lampbrother.net我们来试一下包含空格的URL。newHTTPBuilder("http://localhost:18080").request(Method.GET){uri.path

8、="/foobar"}这个发送的是GET/foo%20barHTTP/1.1,看起来还不错。现在假设我们的路径中有一段就叫做foo/bar。这可不能简单地发送foo/bar就完了,因为这会被认为成路径中包含两段,foo和bar,那我们试下foo%2Fbar吧(把/替换成对应的编码)。newHTTPBuilder('http://localhost:18080').request(Method.GET){uri.path='/foo%2Fbar'}这个发送的则是GET/foo%252

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。