JAVA——HTTP模拟客户端发消息

57 阅读1分钟

代码

public class HttpDemo01{
    public static void main(String[] args){
        //1,我们要访问什么网页,用URL进行封装域名
        URL url=new URL("https://www.baidu.com");
        //2,通过域名打开一个连接服务器的连接对象cunn,没有真正链接
        //HttpURLConnection底层由Socket实现
       HttpURLConnection conn= (HttpURLConnection)url.openConnection();
        //3,封装请求头
        conn.setRequestMethod("GET");//设置请求方式
        conn.setUseCaches(false);//是否使用缓冲(是否存储数据)
        conn.setConnectTimeout(5000);//设置超时时间5s
        
        conn.setRequestProperty("Accept","accept后面的");
        conn.setRequestProperty("User-Agent","User-Agent后面的");
        conn.setRequestProperty("Accept","Http");
        
         //写到文本里
       Bufferedwriter bw = new BufferedWriter(newFileWriter("baidu.txt"));
        
        //4,建立连接并发送请求头,真正的去连接服务器
        conn,connect();//conn:既可以负责发送连接,也可以负责接收数据
        
       // System.out.println(conn.getResponseCode());//获取响应状态码
        bw.write(conn.getResponseCode()+"");//不加“”会认为是字节
        bw.newLine();
        bw.flush();
       
        Map<String,List<String>> map=conn.getHeaderFields();//获取所有响应头中内容
        //获取所有响应头中的内容
        for(String key:map.keySet()){
          //  System.out.println(key+":"+map.get(key));
            bw.write(key+":"+map.get(key));
            bw.newLine();
            bw.flush();
        }
        //获取具体的数据内容,以TCP来
       BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));//获取来自服务器的输入流,字符
      
       String line = null;
       while((line=br.readLine())!=null){
            bw.write(line);
            bw.newLine();
            bw.flush();
       }
       bw.close(); 
       conn.disconnect(); 
    }
}

//默认是UTF-8