Java Socket发送与接收HTTP消息简单实现

本文通过Java Socket实现简单的HTTP客户端和服务端,帮助理解HTTP消息结构。介绍了如何发送HTTP请求并接收响应,包括文件下载场景及可能出现的异常处理。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                 

在上次Java Socket现实简单的HTTP服务我们实现了简单的HTTP服务,它可以用来模拟HTTP服务,用它可以截获HTTP请求的原始码流,让我们很清楚的了解到我们向服务发的HTTP消息的结构,对HTTP请求消息有个清晰的认识。这一节我想写了一个客户的程序,就是用来模拟浏览器,用来向服务器发送HTTP请求,最得要的是可以用它来显示服务器发回来的HTTP响应消息的一般结构。

import java.io.IOException;import java.io.InputStream;import java.io.OutputStreamWriter;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import java.util.ArrayList;/** * 一个简单的HTTP客户端,发送HTTP请求,模拟浏览器 * 可打印服务器发送过来的HTTP消息 */public class SimpleHttpClient private static String encoding = "GBK"public static void main(String[] args) {  try {   Socket s = new Socket(InetAddress.getLocalHost(), 8080);   OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());   StringBuffer sb = new StringBuffer();   sb.append("GET /HttpStream/gb2312.jsp HTTP/1.1\r\n");   sb.append("Host: localhost:8088\r\n");   sb.append("Connection: Keep-Alive\r\n");   //注,这是关键的关键,忘了这里让我搞了半个小时。这里一定要一个回车换行,表示消息头完,不然服务器会等待   sb.append("\r\n");   osw.write(sb.toString());   osw.flush();   //--输出服务器传回的消息的头信息   InputStream is = s.getInputStream();   String line = null;   int contentLength = 0;//服务器发送回来的消息长度   // 读取所有服务器发送过来的请求参数头部信息   do {    line = readLine(is, 0);    //如果有Content-Length消息头时取出    if (line.startsWith("Content-Length")) {     contentLength = Integer.parseInt(line.split(":")[1].trim());    }    //打印请求部信息    System.out.print(line);    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值