基於HTTP協議的客戶/服務器模式的信息交換過程
一個HTTP請求由一個請求行
Method Request
Method表示請求方法
Request
HTTP
CRLF表示回車換行
HTTP請求報文格式如下:
HTTP Command: //方法字段(GET方法
URI: //URL字段
HTTP Version: //http協議版本字段
Accept: //指示可被接受的請求回應的介質類型范圍列表
Accept
Accept
User
Host: //定義了目標所在的主機
Connection: //告訴服務器使用連接類型
在發送HTTP請求行以後
HTTP回應報文
HTTP Version: HTTP/
HTTP Status:
Date: //響應報文的時間
Server: //響應報文的服務器
X
Set
Vary: //
Content
Connection: //告訴客戶機在報文發送完畢後連接的狀態
Content
Binary Data: //二進制數據
狀態碼表示響應類型
在程序中間
Java代碼
import java
import java
import java
import
import
public class TestDownFile {
public static void main(String[] args){
String sURL =
int nStartPos=
int nRead=
String sName=
String sPath=
try {
URL url = new URL(sURL);
//打開連接
HttpURLConnection httpConnection = (HttpURLConnection) url
//獲得文件長度
long nEndPos =getFileSize(sURL);
RandomAccessFile oSavedFile= new RandomAccessFile(sPath+
(
String sProperty =
//告訴服務器book
(
System
InputStream input = ();
byte[] b = new byte[
//讀取網絡文件
while ((nRead = input
&& nStartPos < nEndPos ) {
oSavedFile
nStartPos += nRead;
}
();
} catch (Exception e) {
e
}
}
// 獲得文件長度
public static long getFileSize(String sURL) {
int nFileLength =
try {
URL url = new URL(sURL);
HttpURLConnection httpConnection = (HttpURLConnection) url
(
int responseCode = ();
if (responseCode >=
System
return
}
String sHeader;
for (int i =
sHeader = (i);
if (sHeader != null) {
if (sHeader
nFileLength = Integer
break;
}
} else
break;
}
} catch (IOException e) {
e
} catch (Exception e) {
e
}
System
return nFileLength;
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26034.html