HttpClient 学习记录---URIBuilder
來源: httpClient學習記錄--URIBuilder
構造函數
URIBuilder()
URIBuilder(final String string) 內部會創建URI對象
URIBuilder(final URI uri)
非空的兩個構造實際內部都調用了digestURI(uri) 將URI對象解析并賦值給類的屬性
URIBuilder正是采用了至少有7個參數,如果要滿足各種需求的組合,恐怕總共要提供∑(C^7^~i~)(i=1~7)種構造函數,顯然不現實。然而,URIBuilder既可以造出一個不可變的URI,又可以兼顧N種參數。URIBuilder可以這樣用:
/ http://www.google.com/search?q=編程狗的博客&btnG=Google+Search&aq=f&oq=
URI uri = new URIBuilder()
.setScheme("http")
.setHost("www.google.com")
.setPath("/search")
.setParameter("q", "編程狗的博客")
.setParameter("btnG", "Google Search")
.setParameter("aq", "f")
.setParameter("oq", "")
.build();
uilder Pattern(建造者模式)。等號右邊實際上是一行,先創建一個URIBuilder對象實例,調用實例的setScheme方法,此方法順便返回URIBuilder對象實例,剛剛返回的這個實例調用setHost方法,...,最后一個返回的URIBuilder對象實例調用build方法,返回URI對象。它是如何實現的呢?
原來的URI類的set方法的基礎上,添加一個返回值,返回URIBuilder自己就夠了:
class URIBuilder{
public URIBuilder setScheme(String scheme){
...
return this;
}
public URIBuilder setHost(String host){
...
return this;
}
public URIBuilder setPath(String path){
...
return this;
}
//built 方法,把參數拼接,然后返回一個URI類
public URI built(){
...
return uri;
}
}
由于URIBuilder每次都返回它自己,所以可以連續的執行 set方法,最后通過built方法返回URI類。
類屬性
String url = "http://www.google.com/search?hl=en&q=httpclient&btnG=Google+Search&aq=f&oq=";
URIBuilder uriBuilder = new URIBuilder(url);
System.out.println(uriBuilder.getScheme());
System.out.println(uriBuilder.getUserInfo());
System.out.println(uriBuilder.getHost());
System.out.println(uriBuilder.getPort());
System.out.println(uriBuilder.getPath());
System.out.println(uriBuilder.getQueryParams());
System.out.println(uriBuilder.getFragment());
System.out.println(uriBuilder.getCharset());
輸出如下所示:
scheme:http
userinfo:null
host:www.google.com
prot:-1 端口默認是80,當顯示指定端口時,此處便能取到值
path:/search
queryParams:[hl=en, q=httpclient, btnG=Google Search, aq=f, oq=]
fragment:null
charset:null
某些屬性含義未知手動設置一次
String url = "http://info.sporttery.cn/football/info/fb_match_hhad.php?m=102909";
URIBuilder uriBuilder = new URIBuilder(url);
uriBuilder.setFragment("111");
uriBuilder.setUserInfo("222", "333");
uriBuilder.setCharset(new GBK());
System.out.println(uriBuilder.build());
System.out.println(uriBuilder.getScheme());
System.out.println(uriBuilder.getUserInfo());
System.out.println(uriBuilder.getHost());
System.out.println(uriBuilder.getPath());
System.out.println(uriBuilder.getQueryParams());
System.out.println(uriBuilder.getFragment());
System.out.println(uriBuilder.getCharset());
輸出如下:
http://222:333@info.sporttery.cn/football/info/fb_match_hhad.php?m=102909#111
scheme:http
userInfo:222:333 沒見過這東西-。-
host:info.sporttery.cn
path:/football/info/fb_match_hhad.php
queryParams:[m=102909]
fragment:111 路由
charset:GBK
更多,見文章標題下鏈接
https://blog.csdn.net/wxy1234556/article/details/79022402?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
做產品的程序,才是好的程序員!
總結
以上是生活随笔為你收集整理的HttpClient 学习记录---URIBuilder的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台式机安装固态硬盘方法步骤台式电脑如何安
- 下一篇: 电脑总是蓝屏重启怎么办电脑频繁重启如何修