標籤:
代碼執行個體
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import java.net.URISyntaxException;import java.net.URL;import java.net.URLConnection;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class URLTest {public static void main(String[] args) throws URISyntaxException {InputStream inputStream=null;try {//建立URL對象,例如:百度搜尋中國好聲音//wd關鍵詞的值即為"中國好聲音"的UTF-8編碼,可以使用URLEncoder對字元進行編碼String str="http://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD%E5%A5%BD%E5%A3%B0%E9%9F%B3"+ "&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg"+ "&rsv_enter=1&inputT=1498";URL url = new URL(str);//建立URLConnection對象URLConnection openConnection = url.openConnection();//編碼類別型String encoding=null;//下面列印回應標頭部分System.out.println("-----------回應標頭開始-----------");Map<String, List<String>> headerFields = openConnection.getHeaderFields();Set<Entry<String, List<String>>> entrySet = headerFields.entrySet();Iterator<Entry<String, List<String>>> iterator = entrySet.iterator();while(iterator.hasNext()) {Entry<String, List<String>> next = iterator.next();String key = next.getKey();List<String> value = next.getValue();String string = value.toString();System.out.println(key+":"+string);if("Content-Type".equals(key)) {int indexOf = string.indexOf("charset=");encoding = string.substring(indexOf+8,string.length()-1);}}System.out.println("-----------回應標頭結束-----------");//擷取URLConnection對象的輸入資料流inputStream=openConnection.getInputStream();//通過IO來讀取流,寫入檔案int c;int count=0;File file=new File("baiduOSC.html");FileOutputStream fileOutputStream = new FileOutputStream(file);BufferedOutputStream outputStream = new BufferedOutputStream(fileOutputStream);inputStream=new BufferedInputStream(inputStream);Reader inputStreamReader = new InputStreamReader(inputStream,encoding);while((c=inputStreamReader.read())!=-1) {outputStream.write(c);count++;}inputStreamReader.close();outputStream.close();System.out.println("檔案"+file.getName()+"的大小為"+Math.ceil(count/1024.0)+"kb");System.out.println("下載結束");} catch (IOException e) {System.err.println("無法下載");} finally {if(inputStream!=null) {try {inputStream.close();} catch(Exception ex) {//不處理}}}}} 運行執行個體
-----------回應標頭開始-----------BDPAGETYPE:[3]Transfer-Encoding:[chunked]null:[HTTP/1.1 200 OK]Server:[BWS/1.1]Cxy_ex:[1438852608+2445156729+d41d8cd98f00b204e9800998ecf8427e]BDQID:[0xc8cf935400001d62]Connection:[Keep-Alive]P3P:[CP=" OTI DSP COR IVA OUR IND COM ", CP=" OTI DSP COR IVA OUR IND COM "]Date:[Thu, 06 Aug 2015 09:16:48 GMT]X-UA-Compatible:[IE=Edge,chrome=1]Cache-Control:[private]Cxy_all:[baiduhome_pg+66d9c0f29a9055c1f190fe638dacaa45]Set-Cookie:[H_PS_PSSID=11193_16469_1438_12867_14668_16520_16513_16662_16424_16515_15459_12141_13932_16721; path=/; domain=.baidu.com, BDSVRTM=187; path=/, BD_CK_SAM=1;path=/, BDRCVFR[feWj1Vr5u3D]=mk3SLVN4HKm; path=/; domain=.baidu.com, PSTM=1438852608; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com, BIDUPSID=5DAE500615A53E18FDB62639C686768B; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com, BAIDUID=5DAE500615A53E18FDB62639C686768B:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com]Vary:[Accept-Encoding]BDUSERID:[0]X-Powered-By:[HPHP]Content-Type:[text/html;charset=utf-8]-----------回應標頭結束-----------檔案baiduOSC.html的大小為491.0kb下載結束
使用Java擷取http回應標頭及請求資源