——- android培训、java培训、期待与您交流! ———-
一、获得http请求信息
GET / HTTP/1.1
Host: 127.0.0.1:11000
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
解释:
GET / HTTP/1.1 : 请求方式/协议名称/协议版本
Host: 127.0.0.1:11000 : 主机IP地址:端口号
Connection: keep-alive : 客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。
Accept : 可以接收的文件类型。
User-Agent : User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。
它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。
通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;
Accept-Encoding : 接收文件编码。
Accept-Language : 接收语言
代码块
练习:获得http请求信息
package com.itheima4;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* ServerDemo对象
* @author jjy
*
*/
public class ServerDemo{
public static void main(String[] args)throws Exception{
ServerSocket ss = new ServerSocket(11000);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println("ip地址为;"+ip);
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
/**
* HTTP请求头:
GET / HTTP/1.1
Host: 127.0.0.1:11000
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
*/
System.out.println(new String(buf,0,len));
PrintWriter out = new PrintWriter(s.getOutputStream());
out.println("客户端你好");
//s.close();
//ss.close();
}
}
二、使用URL和URLConnection实现浏览器功能
URL
定义:类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用。
常用方法:
常用方法如下:
Socket(String host, int port) -> 创建一个流套接字并将其连接到指定主机上的指定端口号。
URL(String spec) -> 根据 String 表示形式创建 URL 对象。
getFile() -> 获取此 URL 的文件名。
getHost() -> 获取此 URL 的主机名(如果适用)。
getPath() -> 获取此 URL 的路径部分。
getPort() -> 获取此 URL 的端口号。
getProtocol() -> 获取此 URL 的协议名称。
getQuery() -> 获取此 URL 的查询部分。
openConnection() -> 返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
URLConnection
定义:抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。此类的实例可用于读取和写入此 URL 引用的资源。
常用方法:
常用方法如下:
getInputStream() -> 返回从此打开的连接读取的输入流。
getOutputStream() -> 返回写入到此连接的输出流。
代码块
练习:使用URL和URLConnection实现浏览器功能
package com.itheima4;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
/**
* URLConnectionDemo对象
* @author jjy
*
* 应用层:传输层+响应头
*
*
* SocketAddress:IP地址+端口号
*
* 最大连接数:ServerSocket(int port,int backlog)
*/
public class URLConnectionDemo{
public static void main(String[] args)throws Exception{
URL url = new URL("http://127.0.0.1:8080/myweb/demo.html");
URLConnection conn = url.openConnection();
System.out.println(conn);
InputStream in = conn.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
}
}
运行结果:
sun.net.www.protocol.http.HttpURLConnection:http://127.0.0.1:8080/myweb/demo.html
这是我的主页
欢迎光临
这是我的主页
这是我的主页
这是我的主页
这是我的主页
这是我的主页
这是我的主页