Java實現發送Get和Post請求

前言

已經有幾天沒有寫博客了 , 原因是最近生活中有大量的事情, 儘管每天都在學習 , 但是卻沒有將知識點記錄在博客中 , 感覺這樣非常不好 .

  • 以後一定要堅持寫博客 , 記錄自己成長曆程
  • 希望可以在這裏找到一些志同道合的朋友 , 一起努力 , 一起進步.

總結歸類

  1. Java創建代理連接對象
  2. Java發送Post請求
  3. Java發送Get請求

代碼

Java創建代理連接對象

    /**
     * 1.返回代理對象
     * @param proxyIp
     * @param proxyPort
     * @return
     */
    public Proxy setProxy(String proxyIp , int proxyPort ){
        try{
            InetSocketAddress socketAddress 
                = new InetSocketAddress(proxyIp , proxyPort );
            Proxy proxy = new Proxy(Proxy.Type.HTTP , socketAddress );
            return proxy;
        }catch(Exception e ){
            e.printStackTrace();
        }
        return null;
    }

Java發送Get請求

    /**
     * 2.發送Get請求
     * @param url   
     * @param params        
     * 表示鏈接後面的一些參數 如name=ghoset&pass=ghoset
     * @return
     */
    public String sendGet(String url , String params ) throws Exception {
        StringBuilder builder = new StringBuilder();

        if(params != null || params.length() != 0  ){
            url = url + "?" + params;   //重新構造URL鏈接 
        }
        URL Url  = new URL(url );
        URLConnection conn =  Url.openConnection();
        // 設置代理
        //URLConnection conn = Url.openConnection(setProxy(proxyHost, proxyPort));
        // 如果需要設置代理賬號密碼則添加下面一行
        //conn.setRequestProperty("Proxy-Authorization", "Basic "+Base64.encode("account:password".getBytes()));

        //發送數據包(可以直接抓取瀏覽器數據包然後複製)
        conn.setRequestProperty("accept", "*/*" );
        conn.setRequestProperty("Connection", "Keep-Alive" );
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36");

        conn.connect();

        //接收響應的數據包
        Map<String , List<String > > map = conn.getHeaderFields();
        Set<String > set = map.keySet();
        for(String k : set ){
            String v = conn.getHeaderField(k );
            System.out.println(k + ":" + v  );
        }


        //返回瀏覽器的輸出信息
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream() ));
        String line = reader.readLine();
        line = new String(line.getBytes() , "gbk" );
        //實現將字符串轉成gbk類型顯示.
        while(line != null ){
            builder.append(line +"\r\n" );
            System.out.println(line );
            line = reader.readLine();
        }

        //釋放資源
        reader.close();

        return builder.toString();
    }

Java發送Post請求

/**
     * 3.發送POST請求
     * @param url
     * @param params
     * @param forData
     * @return
     * @throws Exception
     */
    public String sendPost(String url , String params  , String formData) throws Exception{

        StringBuilder builder = new StringBuilder();

        if(!(params == null || params.length() == 0) ){
            url += ("?" + params ); 
        }

        URL Url = new URL(url );
        URLConnection conn = Url.openConnection();

        //如果設置代理 , 和發送GET一樣.
        conn.setRequestProperty("accept", "*/*" );
        conn.setRequestProperty("Connection", "Keep-Alive" );
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36");

        //設置之後就可以發送POST請求了
        conn.setDoInput(true );
        conn.setDoOutput(true );


        //獲取它的輸出流 , 直接寫入post請求
        PrintWriter writer = new PrintWriter(conn.getOutputStream() );
        writer.print(formData );                                    
        writer.flush();


        //獲取瀏覽器的返回數據
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream() ) );
        String line = reader.readLine();
        line = new String(line.getBytes() , "utf-8" );  //解決亂碼的問題
        while(line != null ){
            System.out.println(line );
            builder.append(line + "\r\n" );
            line = reader.readLine();
        }
        reader.close();
        writer.close();


        return builder.toString();
    }

測試方法

    public static void main(String[] args) {
        HttpRequestUtil request = new HttpRequestUtil();
        try{
            Proxy proxy = request.setProxy(InetAddress.getLocalHost().getHostAddress() , 8888 );
        System.out.println(proxy );
    //Get請求             
    request.sendGet("http://localhost/review/html/index.php", "username=ghoset&password=ghoset" );

    //Post請求    
            String formData = "username=ghoset&password=ghoset";
            String rs = request.sendPost("http://localhost/review/java/index.php", null , formData );

        }catch(Exception e ){
            e.printStackTrace();
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章