java socket发送http_Java使用Socket实现发送http头并获取响应

本文展示了如何使用Java的Socket类发送HTTP请求头到www.baidu.com并接收响应。代码中创建了一个Socket连接,构建了GET请求,并处理了输入输出流。在HTTP头中包含了必要的字段,例如Host和Connection。注意,若不设置'Connection: close',服务器可能会保持连接以支持持续请求。程序通过读取输入流打印服务器的响应内容。
摘要由CSDN通过智能技术生成

如题。关于http头的具体内容,可以自己查一下,如果对计算机网络感兴趣,推荐我们的课本《Computer Networking ——A Top Down Approach》

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.Socket;

public class Main {

public static void main(String[] args) {

try {

Socket socket = new Socket("www.baidu.com", 80);

OutputStream out = socket.getOutputStream();

InputStream in = socket.getInputStream();

StringBuffer sb = new StringBuffer();

sb.append("GET /index.html HTTP/1.1\r\n");

//sb.append("Host: www.baidu.com\r\n");

sb.append("Connection: close\r\n");

//sb.append("User-agent: Mozilla/5.0\r\n");

//sb.append("Accept-language: zh-cn\r\n");

sb.append("\r\n");

out.write(sb.toString().getBytes());

out.flush();

BufferedReader reader = new BufferedReader(new InputStreamReader(in));

String tmp = "";

System.out.println("response:\r\n");

while ((tmp = reader.readLine()) != null) {

System.out.println(tmp);

}

socket.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

注释掉的可以不加,也可以加上。如果去掉了connection项的话,会导致在while循环中不出来,应该是自动keep-alive了。最后一行的"\r\n"不要忘记,否则会无法返回的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值