遵循HTTP协议,向服务器发送请求,得到服务器的响应。 因为这只是一个请求,所以只是获得页面的主要代码(一个页面大都需要多个请求完成)。
这个程序只能访问支持http协议的服务器。不能访问支持HTTPS协议的。
public class ClientTest {
public static void main(String[] args) {
try {
Socket socket=new Socket("www.puyang.gov.cn", 80);
OutputStream out=socket.getOutputStream();
//理论上讲,只要请求头的个数满足对方服务器要求,都会有 200 响应
String str="GET /index.htm HTTP/1.1\r\n"
+"Accept: text/html,application/xhtml+xml,application/xml;q=0.9\r\n"
+"Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6\r\n"
+"Host: www.puyang.gov.cn\r\n"
+"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47\r\n"
+"\r\n";
out.write(str.getBytes());
InputStream in=socket.getInputStream();
byte[] buf=new byte[2048];
int i = in.read(buf);
if (i!=-1) {
System.out.println(new String(buf));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行后,可以得到“HTTP/1,1 200 OK”等HTTP响应信息,并有网站主页的部分代码作为响应体。