導讀目錄
- InetAddress類
- URLDecoder和URLEncoder
Java為網(wǎng)絡(luò)支持提供了java.net包伪节,該包下的URL和URLConnection等類提供了以編程方式訪問Web服務(wù)的功能,而URLDecoder和URLEncoder則提供了普通字符串和application/x-www-form-urlencoder MIME字符串相互轉(zhuǎn)換
1.InetAddress類
InetAddress類是Java包裝用來表示IP地址的高級表示臀脏。幾乎所有的Java網(wǎng)絡(luò)相關(guān)的類都和它有關(guān)系虏冻,例如:serversocket,socket,URL,DataGramSocket,DataGRamPacket等
它代表IP地址肤粱,沒有構(gòu)造器,提供了靜態(tài)方法類獲取實例
static InetAddress getByAddress(byte[] addr);//根據(jù)原始的IP地址來獲取對應的InetAddresss實例
static InetAddress getByName(String host); //根據(jù)主機名獲取對應的InetAddress
static InetAddress getByAddress(String host, byte[] addr);
InetAddress提供了如下的方法來獲取其實例中封裝的IP地址和主機名:
String getCanonicalHostName(); //獲取此IP地址的全限定域名,即計算計的全名
String getHostAddress(); //返回該實例對應的IP地址的字符串
String getHostName();//返回此IP地址的主機名
static InetAddress getLocalHost(); //返回本機IP地址對應InetAddress實例
boolean isReachable(int timeout); //測試某一個InetAddress對應的主機是否可達, timeout參數(shù)是最長的測試時間
2.URLDecoder和URLEncoder
URLDecoder和URLEncoder用于完成普通字符串和application/x-www-form-urlencoded MIME字符串之間的相互轉(zhuǎn)換
URLDecoder
static String decode(String s, String enc); //將MIME字符串轉(zhuǎn)換為普通字符串(我們能看懂的), enc受支持字符編碼的名稱
URLEncoder
static String encode(String s, String enc); //將普通字符串(我們能看懂的)轉(zhuǎn)換為MIME字符串
3.URL厨相、URLConnection领曼、URLPermission(Java8新增的)
URL(Uniform Resource Locator)對象代表同一資源定位器唧喉,它包含一個可打開到達特定資源的輸入流秉氧《矗可將URL理解為URI的特例钧椰。
URL地址:protocol://host:port/resourceName
URI(Uniform Resource Identifiers)對象代表一個統(tǒng)一資源標識符,它不能定位任何資源,其唯一作用就是解析蛉艾,
(1)URL
URL提供多個構(gòu)造器捉超,
URL(String spec); //根據(jù)資源文件的路徑(可以是網(wǎng)絡(luò)路徑猜拾、計算計上的文件路徑)
提供的方法:
String getFile();
String getHost();
String getPath();
int getPort();
String getProtocol();
String getQuery();//返回該URL的查詢字符串部分
URLConnection openConnection(); //返回一個URLConnection對象府适,代表與URL所引用的遠程對象的連接
InputStream openStream(); //打開與此URL的連接羔飞,并返回一個可用于讀取該URL資源的InputStream
(2)URLConnection
URLConnection
|
HttpURLConnection
JarURLConnection
抽象類URLConnection是所有類別代表和一個URL的應用程序之間的通信鏈路的父類。這個類的實例可以用于讀取和寫入URL引用的資源檐春。一般來說逻淌,創(chuàng)建連接到URL是一個多步驟的過程:
(1)通過URL對象的openConnection()方法來創(chuàng)建URLConnection對象
(2)設(shè)置URLConnection的參數(shù)和普通請求屬性
(3)如果只是發(fā)送GET請求,則使用connect()方法建立和遠程資源之間的實際連接即可疟暖,
如果是發(fā)送POST請求卡儒,則需要獲取URLConnection實例對應的輸出流(通過getOutputStream()來獲取)來發(fā)送請求參數(shù)
(4)遠程資源變?yōu)榭捎茫绦蚩梢栽L問遠程資源的頭字段或通過輸入流(通過getInputStream()來獲取)讀取遠程資源的數(shù)據(jù)
建立和遠程資源之間的實際連接之前俐巴,程序可以通過如下方法來設(shè)置請求頭字段:
void setAllowUserInteraction(boolean allowuserinteraction);//設(shè)置該URLCOnnection的allowUserInteraction請求頭字段的值
void setDoInput(boolean doinput);//設(shè)置該URLCOnnection的doInput請求頭字段的值
void setDoOutput(boolean dooutput);//設(shè)置該URLCOnnection的doOutput請求頭字段的值
void setIfModifiedSince(long ifmodifiedsince);//設(shè)置該URLCOnnection的ifModifiedSince字段的值
void setUseCaches(boolean usecaches);//設(shè)置該URLCOnnection的useCaches請求頭字段的值
abstract void connect();//如果此連接尚未建立朋贬,則打開此url引用的資源的通信鏈路
void setRequestProperty(String key, String value);//設(shè)置通用頭字段,如"accept", "/"
void addRequestProperty(String key, String value); //該URLCOnnection的key請求頭字段增加為value值窜骄,該方法不會覆蓋原請求頭字段的值,而是將新值追加到原請求頭字段中
InputStream getInputStream();//獲取該URLConnection對應的輸入流摆屯,用于獲取URLConnection響應的內(nèi)容
OutputStream getOutputStream();////獲取該URLConnection對應的輸出流邻遏,用于向URLConnection發(fā)送請求參數(shù)
注意:如要既要使用輸入流讀取URLConnection相應的內(nèi)容糠亩,又要使用輸出流發(fā)送請求參數(shù),則一定要先使用輸出流准验,在使用輸入流