HTTP客户端的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的和要求
1、实验目的
HTTP客户端程序的功能是给出一个URL,要求程序能够获得指定URL所指向的内容,对于获得内容不必做进一步的处理,只打印HTML代码即可
●通过HTTP客户端程序使学生掌握网络编程的基本知识和基
本技能;
●使学生掌握HTTP协议的常用命令;
●通过跟踪运行java网络包,使学生了解网络编程实现的细节。
2、实验要求
本实验要求实现一个简单的HTTP客户端,具体内容及要求如下:
●分析HTTP客户端程序的功能,要求能根据给定的URL,获
得URL指向的资源,对于资源的内容可以不做任何的处理,
直接打印即可;
●实现HTTP客户端程序;
●跟踪运行java网络包。
二、系统技术路线和运行环境
1、技术路线:
本系统采用Java语言开发,可以适应几乎所有支持JVM的操作系统。同时Java语言在网络领域的特殊优势,使得它所提供的类库中包含了较为丰富的网络编程API,可以使开发人员方便地开发网络通信类应用程序。
其次还采用了Tomcat6.0与jsp相结合的web建设、使得该系统能够更好的符合实验的要求和标准。
2、系统运行环境:
●硬件环境:
PC机一台
●软件环境:
操作系统:Windows XP、Tomcat6.0、jdk6.0、eclipse等
三、程序的逻辑框图
程序流逻辑框图能够帮助我们更好的熟悉和了解该系统的运行过程,本系统的一些逻辑框图如下所示:
四、程序源代码
1、基于URL的HttpClient.java程序代码如下:import java.awt.*;
import java.awt.event.*;
import java.io.*;
import .*;
import javax.swing.*;
public class HttpClient extends JApplet
implements ActionListener {
//创建一个按钮来点击事件
private JButton jbtView = new JButton("View");
//文本字段来接收文件的名字
private JTextField jtfURL = new JTextField(12);
//文本区域来存储文件
private JTextArea jtaFile = new JTextArea();
//标签来显示状态
private JLabel jlblStatus = new JLabel();
/**初始化applet **/
public void init() {
//创建一个面板来保存一个标签、文本字段和一个按钮JPanel p1 = new JPanel();
p1.setLayout(new BorderLayout());
p1.add(new JLabel("address"), BorderLayout.WEST);
p1.add(jtfURL, BorderLayout.CENTER);
p1.add(jbtView, BorderLayout.EAST);
//放置文本区域和面板
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new JScrollPane(jtaFile),
BorderLayout.CENTER);
getContentPane().add(p1, BorderLayout.NORTH);
getContentPane().add(jlblStatus, BorderLayout.SOUTH);
//登记侦听器
jbtView.addActionListener(this);
}
/**处理“视图”按钮**/
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jbtView)
showFile();
}
private void showFile() {
//声明为阅读文本缓冲流的URL
BufferedReader infile = null;
URL url = null;
try {
//获取URL从文本字段
url = new URL(jtfURL.getText().trim());
//创建一个缓冲流
InputStream is = url.openStream();
infile = new BufferedReader(new InputStreamReader(is));
//获得文件的名字从文本字段
String inLine;
//读取一行,即可将行文本区域
while ((inLine = infile.readLine()) != null) {
jtaFile.append(inLine + '\n');
}
jlblStatus.setText("File loaded successfully");
}
catch (FileNotFoundException e) {
jlblStatus.setText("URL " + url + " not found.");
}
catch (IOException e) {
jlblStatus.setText(e.getMessage());
}
finally {
try {
if (infile != null) infile.close();
}
catch (IOException ex) {}
}
}
/**主要方法**/
public static void main(String[] args) {
//创建一个框架
JFrame frame = new JFrame("HttpClient");
// HttpClient实例创建
HttpClient applet = new HttpClient();
//添加applet实例框架
frame.getContentPane().add(applet, BorderLayout.CENTER);
//调用init()和start()
applet.init();
applet.start();