熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java網絡編程之URI、URL研究專題七

2013-11-12 23:37:21  來源: Java核心技術 

  在對openConnection()的調用返回後調用了connect()方法用於建立某種資源的連接(盡管openConnection()方法返回一個連接對象的引用但是openConnection()不會連接到資源) URLConnection的getHeaderFields()方法返回一個對象的應用該對象的類實現了javautilMap接口
  
  該圖表(map)包含頭部名稱和值的集合什麼是頭部(header)?頭部是基於文本的名稱/值對它識別資源數據的類型數據的長度等等
  
  在編譯了URLDemo在命令行輸入java URLDemo 輸出如下
  
  Date=[Sun Feb :: GMT]
  
  Connection=[KeepAlive]
  
  ContentType=[text/html; charset=iso]
  
  AcceptRanges=[bytes]
  
  ContentLength=[]
  
  ull=[HTTP/ OK]
  
  ETag=[ecebfda]
  
  KeepAlive=[timeout= max=]
  
  Server=[Apache/ (Unix) Debian/GNU]
  
  LastModified=[Wed Nov :: GMT]
  
  Input allowed = true
  
  Output allowed = false
  
  上面的輸出識別了很多頭部(包括DatenullContentLength ServerLastModified等等)和它們的值輸出也顯示只允許從資源讀取數據
  
  你對一個程序是如何識別資源數據的是否感到驚奇?仔細看一下前面的輸出你會看到叫做ContentType的東西ContentType是一個頭部它識別了資源數據(內容)的類型是text/htmltext部分就是我們所知道的類型html部分是我們所知道的子類型
  
  (如果內容是普通的文本ContentType的值可能是text/plain上面的類型表明內容是文本的但不是沒有格式的)ContentType頭部是我們所知道的多用途Internet郵件擴展(MIME)的一部分
  
  MIME是傳統的傳輸消息的位ASCII標准的一種擴展通過引入了多種頭部MIME使視頻聲音圖像不同字符集的文本與位ASCII結合起來有了ContentTypeMIME可以識別ContentLength和其它標准的頭部當你使用URLConnection類的時候你會遇到getContentType()和getContentLength()這些方法返回的值是ContentType和ContentLength頭部
  
  你也許聽說過HTML窗體(<form> </form>)和其它的HTML標記窗體使我們能夠從某種資源得到(GET)數據並按後來的處理把HTML窗體的字段數據發送(POST)到某種資源你能夠使用URLConnection類和MIME模擬可以得到和發送數據的HTML窗體下面說明你怎樣完成這種事務
  
  假設你想把窗體數據發送(POST)到某個服務器程序發送需要對窗體數據的操作首先窗體的數據必須組織為名稱/值對(name/value pair)其次每個對必須指定為name=value格式再次如果發送多個名稱/值對必須使用 & 符號把每對分開最後的name內容和value的內容必須使用application/xwwwformurlencoded MIME類型編碼例如x=y&a=b表現了兩個名稱/值對x/y和a/b
  
  為了輔助編碼Java提供了URLEncoder類它聲明了一對靜態的encode()方法每個方法有一個String參數並返回包含已編碼的參數內容的String對象的引用例如如果encode()發現參數中有空格它在結果中用加號代替空格
  
  下面的代碼片斷演示了調用URLEncoder的encode(String s)方法對a 空格 b字符串進行編碼結果a+b存儲在一個新的String對象中result引用它
  
  String result = URLEncoderencode (a b);
  
  作為准備窗體數據的補充必須告訴URLConnection對象數據已經被發送了因為URLConnection默認的操作是獲取數據為了完成這種事務你可以首先把openConnection()的返回值轉換為HttpURLConnection類型(在確保該返回值的類型正確後)接著調用結果對象的setRequestMethod(String method)方法把POST作為method參數引用的對象的值
  
  另一個必須完成的事務是調用URLConnection的setDoOutput(boolean doOutput)方法其參數的值必須為true這種事務是必要的因為URLConnection對象在默認情況下不支持輸出(接著程序最終可以調用URLConnection的getOutputStream()方法為發送的窗體數據返回一個資源的輸出流的引用)
From:http://tw.wingwit.com/Article/program/Java/hx/201311/11144.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.