模拟浏览器访问 服务器
模拟浏览器 实际上就是 按照 协议的规则 ,发送对应的数据 ,使得服务器可以将该数据解析,并作出相应的响应
代码:模拟浏览器 按照http(超文本协议) 向浏览器发送
1.请求方式 GET访问的文档 /index.html 协议的版本HTTP/1.1
2.以键值对的方式发送请求头,如语言 ,位置 ,连接方式.....(这也是爬虫的伪装服务器的原理)
3.发送请求体, 如密码 用户名等
public class copy_demo {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket s =new Socket("182.254.197.196",80);
//模拟浏览器,向服务器端发送符合http协议的请求消息
PrintWriter out=new PrintWriter(s.getOutputStream(),true);
out.println("GET /index.html HTTP/1.1");
out.println("Accept: */*");
out.println("Host: 169.254.103.122");//本机地址
out.println("Connection: close");//连接方式
out.println();
out.println();
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream(),"utf-8"));
String str; //使用↑来编码
while((str=in.readLine())!=null) {
System.out.println(str);
}
}
}
当然,面向对象的java将其封装成对象, 可以通过URL类对指定 协议 IP 文档 的服务器进行访问。
public static void main(String[] args) throws IOException {
String str_url="http://182.254.197.196/index.html";
URL url = new URL(str_url);
System.out.println("protocol"+url.getProtocol());
System.out.println("getHost"+url.getHost());
System.out.println("getPort"+url.getFile());
System.out.println("getFile"+url.getPath());
System.out.println("getPath"+url.getPath());
System.out.println("getQuery"+url.getQuery());
BufferedInputStream bis=new BufferedInputStream(url.openStream());
byte[] b=new byte[1024];
int len;
while((len=bis.read(b))!=-1) {
System.out.println(new String(b,0,len,"utf-8"));
}
bis.close();
}
网络编程 目前只学习了 一些基础的理论和一些简单的java代码与 服务器的交互 ,后期会再次深入学习的!