Java網(wǎng)絡(luò)編程 - 02 的基本網(wǎng)絡(luò)支持

導讀目錄
  • InetAddress類
  • URLDecoder和URLEncoder

Java為網(wǎng)絡(luò)支持提供了java.net包伪节,該包下的URLURLConnection等類提供了以編程方式訪問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ù),則一定要先使用輸出流准验,在使用輸入流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赎线,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糊饱,更是在濱河造成了極大的恐慌垂寥,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件另锋,死亡現(xiàn)場離奇詭異滞项,居然都是意外死亡,警方通過查閱死者的電腦和手機夭坪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門文判,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人室梅,你說我怎么就攤上這事戏仓。” “怎么了亡鼠?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵赏殃,是天一觀的道長。 經(jīng)常有香客問我间涵,道長仁热,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任浑厚,我火速辦了婚禮股耽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钳幅。我一直安慰自己物蝙,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布敢艰。 她就那樣靜靜地躺著诬乞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钠导。 梳的紋絲不亂的頭發(fā)上震嫉,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音牡属,去河邊找鬼票堵。 笑死,一個胖子當著我的面吹牛逮栅,可吹牛的內(nèi)容都是我干的悴势。 我是一名探鬼主播窗宇,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼特纤!你這毒婦竟也來了军俊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捧存,失蹤者是張志新(化名)和其女友劉穎粪躬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昔穴,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡镰官,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了傻咖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朋魔。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖卿操,靈堂內(nèi)的尸體忽然破棺而出警检,到底是詐尸還是另有隱情,我是刑警寧澤害淤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布扇雕,位于F島的核電站,受9級特大地震影響窥摄,放射性物質(zhì)發(fā)生泄漏镶奉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一崭放、第九天 我趴在偏房一處隱蔽的房頂上張望哨苛。 院中可真熱鬧,春花似錦币砂、人聲如沸建峭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亿蒸。三九已至,卻和暖如春掌桩,著一層夾襖步出監(jiān)牢的瞬間边锁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工波岛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茅坛,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓则拷,卻偏偏與公主長得像贡蓖,于是被迫代替她去往敵國和親祟剔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理摩梧,服務(wù)發(fā)現(xiàn),斷路器宣旱,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 前言 多年以前自學Java仅父,在本地做了一些筆記。最近幾年流行播客浑吟,一方面防止丟失笙纤,一方面可以幫助其他小伙伴...
    chaohx閱讀 1,033評論 0 3
  • 經(jīng)驗:1.在網(wǎng)絡(luò)端接收數(shù)據(jù)后寫入本地時要用write(byte[],0,len),不要用write(byte[])...
    123yuan123閱讀 381評論 0 2
  • 老師我目前未婚省容,是銀行文員,地處陜西延安燎字。想知道未來事業(yè)如何腥椒,家庭事業(yè)怎么樣? 生肖馬坤造:庚午候衍,戊寅笼蛛,癸丑,乙卯...
    陳語軒國學大講堂閱讀 782評論 0 1
  • 我國傳統(tǒng)的清明節(jié)大約始于周代蛉鹿,已有二千五百多年的歷史滨砍。清明最開始是一個很重要的節(jié)氣,清明一到妖异,氣溫升高惋戏,正是春...
    閆杰閱讀 293評論 0 0