zoukankan      html  css  js  c++  java
  • socket http read

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.Authenticator;
    import java.net.HttpURLConnection;
    import java.net.InetSocketAddress;
    import java.net.PasswordAuthentication;
    import java.net.Proxy;
    import java.net.Socket;
    import java.net.SocketAddress;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    
    public class HttpTest {
        public static void main(String[] args) {
            socket_http_reade();
        }
    
        public static void socket_http_reade() {
            String hostname = "10.63.9.55";
            int port = 80;
            String httpPackage = getTempGetMethodPackage(hostname);
            StringBuilder httpRsp = new StringBuilder();
            Socket s = new Socket();
            try {
                s.connect(new InetSocketAddress(hostname, port), 1000);
                OutputStream out = s.getOutputStream();
                out.write(httpPackage.toString().getBytes("utf-8"));
                out.flush();
    
                InputStream in = s.getInputStream();
                int readed = 0;
                int contentLength = 0;
                while (true) {
                    byte[] lineDatas = readHttpHeaderLine(in);
                    readed += lineDatas.length;
                    String line = new String(lineDatas, "utf-8");
                    if (line.startsWith("Content-Length")) {
                        String[] tmp = line.split(":");
                        contentLength = Integer.parseInt(tmp[1].trim());
                    }
                    httpRsp.append("> " + line);
                    if (line.equals("
    ")) {
                        break;
                    }
                }
    
                byte[] bodys = new byte[contentLength];
                readed = 0;
                while (readed < contentLength) {
                    byte b = (byte) in.read();
                    bodys[readed] = b;
                    readed++;
                }
                String body = new String(bodys, "utf-8");
                System.out.print(body);
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        public static byte[] readHttpHeaderLine(InputStream in) throws IOException {
            byte[] buf = new byte[200];
            int readed = 0;
            byte b;
            do {
                b = (byte) in.read();
                int bufLen = buf.length;
                if (readed > bufLen) {
                    byte[] temp = new byte[bufLen * 2];
                    for (int i = 0; i < bufLen; i++) {
                        temp[i] = buf[i];
                    }
                    buf = temp;
                } else {
                    buf[readed] = b;
                }
                readed++;
            } while (((char) b) != '
    ');
    
            byte[] temp = new byte[readed];
            for (int i = 0; i < readed; i++) {
                temp[i] = buf[i];
            }
    
            return temp;
        }
    
        public static String getTempGetMethodPackage(String host) {
            StringBuilder httpPackage = new StringBuilder();
            httpPackage.append("GET / HTTP/1.1
    ");
            httpPackage.append("host: " + host + "
    ");
            httpPackage.append("Proxy-Connection: keep-alive");
            httpPackage.append("Cache-Control: max-age=0
    ");
            httpPackage.append("Upgrade-Insecure-Requests: 1
    ");
            httpPackage.append(
                    "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36
    ");
            httpPackage.append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    ");
            httpPackage.append("Accept-Encoding: gzip, deflate, sdch
    ");
            httpPackage.append("Accept-Language: zh-CN,zh;q=0.8
    ");
            httpPackage.append("
    ");
    
            return httpPackage.toString();
        }
    
        
    }
  • 相关阅读:
    dubbo zookeeper报错failed to connect to server , error message is:No route to host
    linux的ssh命令
    linux的/etc/hosts的作用
    linux如何查看某个pid的进程?
    Nginx配置详解
    nginx基本配置与参数说明以及Nginx中的upstream轮询机制介绍
    Nginx配置upstream实现负载均衡
    nginx简单的nginx.conf配置
    API Gateway性能比较:NGINX vs. ZUUL vs.Cloud Gateway vs. Linkerd[译]
    RabbitMQ 入门【精+转】
  • 原文地址:https://www.cnblogs.com/byxxw/p/5981486.html
Copyright © 2011-2022 走看看