資源簡介
實現HTTP1.0中的GET和PUT請求響應。內含代碼,上傳以待大家共同學習。
2019年秋季由王犇老師授教的課程。
由NWPU_Happy_Coder于2019/12/11 15:04上傳.
2019年秋季由王犇老師授教的課程。
由NWPU_Happy_Coder于2019/12/11 15:04上傳.

代碼片段和文件信息
package?exec2;
import?java.io.BufferedReader;
import?java.io.FileOutputStream;
import?java.io.InputStreamReader;
import?java.io.PrintWriter;
/**
?*?Class?Client?is?a?class?representing?a?simple?HTTP?client.
?*
?*?@author?wben?+?wjl
?*/
public?class?Client?{
private?static?String?getPath?=?“C:\\Users\\14551\\Desktop\\internet\\getc\\“;//客戶端GET到的文件存放路徑
/**
?*?default?HTTP?port?is?port?80
?*/
private?static?int?port?=?80;
/**
?*?Allow?a?maximum?buffer?size?of?8192?bytes
?*/
private?static?int?buffer_size?=?8192;
/**
?*?The?end?of?line?character?sequence.
?*/
private?static?String?CRLF?=?“\r\n“;
/**
?*?Input?is?taken?from?the?keyboard
?*/
static?BufferedReader?keyboard?=?new?BufferedReader(new?InputStreamReader(System.in));
/**
?*?Output?is?written?to?the?screen?(standard?out)
?*/
static?PrintWriter?screen?=?new?PrintWriter(System.out?true);
public?static?void?main(String[]?args)?throws?Exception?{
try?{
/**
?*?Create?a?new?HttpClient?object.
?*/
HttpClient?myClient?=?new?HttpClient();
/**
?*?Parse?the?input?arguments.
?*/
?/*
if?(args.length?!=?1)?{?
System.err.println(“Usage:?Client?“);
System.exit(0);?
}
??*/
/**
?*?Connect?to?the?input?server
?*/
args[0]?=?“127.0.0.1“;//連接地址
myClient.connect(args[0]);
/**
?*?Read?the?get?request?from?the?terminal.
?*/
screen.println(args[0]?+?“?is?listening?to?your?request:“);
String?request?=?keyboard.readLine();
if?(request.startsWith(“GET“))?{
/**
?*?Ask?the?client?to?process?the?GET?request.
?*/
myClient.processGetRequest(request);
}?else?if?(request.startsWith(“PUT“))?{
/**
?*?Ask?the?client?to?process?the?PUT?request.
?*/
myClient.processPutRequest(request);
}?else?{
/**
?*?Do?not?process?other?request.
?*/
myClient.processPutRequest(request);//同樣處理?通過服務器端處理錯誤報文后返回
//?screen.println(“Bad?request!?\n“);
//?myClient.close();
//?return;
}
/**
?*?Get?the?headers?and?display?them.
?*/
screen.println(“Header:?\n“);
screen.print(myClient.getHeader()?+?“\n“);
screen.flush();
int?staus?=?0;
String?str[]?=?myClient.getHeader().split(“[?\r\n]“);
staus?=?Integer.valueOf(str[1]);//?獲取狀態信息
if?(request.startsWith(“GET“)?&&?staus?==?200)?{
/**
?*?Ask?the?user?to?input?a?name?to?save?the?GET?resultant?web?page.
?*/
screen.println();
screen.print(“Enter?the?name?of?the?file?to?save:?“);
screen.flush();
String?filename?=?keyboard.readLine();
FileOutputStream?outfile?=?new?FileOutputStream(getPath?+?filename);
/**
?*?Save?the?response?to?the?specified?file.
?*/
String?response?=?myClient.getResponse();
outfile.write(response.getBytes(“iso-8859-1“));
outfile.flush();
outfile.close();
}
/**
?*?Close?the?conn
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3197??2019-12-11?14:45??exec2_http_wjl\Client.java
?????文件????????3959??2019-12-11?14:52??exec2_http_wjl\HttpClient.java
?????文件????????6302??2019-12-11?14:50??exec2_http_wjl\HttpHandler.java
?????文件????????1255??2019-12-11?14:39??exec2_http_wjl\HttpServer.java
?????目錄???????????0??2019-12-11?14:59??exec2_http_wjl\
評論
共有 條評論