JAVA用http協議GET方法從伺服器獲取圖片儲存到本地
本文重點:
1. 通過Java介面進行Http程式設計
2. 通過GET方式請求資料
3. 理解InputStream和FileOutputStream的使用方法
------------------------------------------------------------------------------------------------------------
本例中:
InputStream : 從伺服器返回一個image的輸入流。
FileOutputStream : 將image輸入流寫到本地磁碟。
------------------------------------------------------------------------------------------------------------
注:
1.客戶端:使用eclipse , 建立一個java project : java_http_get , /src/HttpUtils.java (目標:用java介面實現Http GET請求從伺服器下載一張pic1.jpg儲存到本地D盤)
2.伺服器端:使用MyEclipse , 建立一個 Web Project : myhttp , 在/WebRoot 目錄下放一張 pic1.jpg
3.啟動伺服器,再執行客戶端,則程式結果:將伺服器上pic1.jpg 寫到本地D盤。
------------------------------------------------------------------------------------------------------------
三幅圖
1.客戶端java project目錄
2.伺服器端pic1.jpg的位置
3.程式執行的結果
----------------------------------------------------------------------------------------------------------------------
客戶端HttpUtils.java 程式碼:
package com.http.get; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class HttpUtils { public static String URL_PATH = "http://192.168.0.100:8080/myhttp/pic1.jpg"; public HttpUtils() { // TODO Auto-generated constructor stub } //把從伺服器獲得圖片的輸入流InputStream寫到本地磁碟 public static void saveImageToDisk() { InputStream inputStream = getInputStream(); byte[] data = new byte[1024]; int len = 0; FileOutputStream fileOutputStream = null; try { fileOutputStream = new FileOutputStream("D:\\test1.jpg"); while ((len = inputStream.read(data)) != -1) { fileOutputStream.write(data, 0, len); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (fileOutputStream != null) { try { fileOutputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } // 從伺服器獲得一個輸入流(本例是指從伺服器獲得一個image輸入流) public static InputStream getInputStream() { InputStream inputStream = null; HttpURLConnection httpURLConnection = null; try { URL url = new URL(URL_PATH); httpURLConnection = (HttpURLConnection) url.openConnection(); // 設定網路連線超時時間 httpURLConnection.setConnectTimeout(3000); // 設定應用程式要從網路連線讀取資料 httpURLConnection.setDoInput(true); httpURLConnection.setRequestMethod("GET"); int responseCode = httpURLConnection.getResponseCode(); if (responseCode == 200) { // 從伺服器返回一個輸入流 inputStream = httpURLConnection.getInputStream(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return inputStream; } public static void main(String args[]) { // 從伺服器端獲得圖片,儲存到本地 saveImageToDisk(); } }