1. 程式人生 > >JAVA用http協議GET方法從伺服器獲取圖片儲存到本地

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();
	}
}