使用JDK原生api進行網絡請求並比較

3.1.1知識概述
使用原生API發送Get請求

package cn.itcast.spider;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 使用JDK的api進行get請求

 1.在使用httpurlconnection時,默認就是get請求。如何改成post請求?
 2.http協議中,可以指定header,想添加user-agent

 */
public class BasicHttpGet {

   public static void main(String[] args) throws Exception {
      //1.指定一個url
      String domain = "http://www.itcast.cn";
      //2.發起一個請求
      URL url = new URL(domain);
      HttpURLConnection conn = (HttpURLConnection)url.openConnection();

      //添加請求方式
      conn.setRequestMethod("GET");

      //添加請求頭------如果編寫爬蟲,真實瀏覽器發送的header都拷貝
      conn.setRequestProperty("Accept", "text/html");
      /**
       Accept:text/html
       **/

      //3.獲取返回值
      InputStream inputStream = conn.getInputStream();
      //3.1 將輸入流轉換字符串
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
      //3.2 一次讀取bufferReader的數據
      String line =null;
      while((line=bufferedReader.readLine())!=null){
         System.out.println(line);
      }
      //4.關閉流
      inputStream.close();
   }

}

Java網絡請求原生API-Post請求

package cn.itcast.spider;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 使用JDK的api進行POST請求

 1.在使用httpurlconnection時,默認就是get請求。如何改成post請求?

 第一步:設置請求方法 setRequestMethod("POST")
 第二步:設置doOutPut(true)

 2.http協議中,可以指定header,想添加user-agent
 */
public class BasicHttpGet {

   public static void main(String[] args) throws Exception {
      //1.指定一個url
      String domain = "http://www.itcast.cn";
      //2.發起一個請求
      URL url = new URL(domain);
      HttpURLConnection conn = (HttpURLConnection)url.openConnection();

      //2.1 添加請求方式
      conn.setRequestMethod("POST");
      //2.2 添加請求頭------如果編寫爬蟲,真實瀏覽器發送的header都拷貝
      conn.setRequestProperty("Accept", "text/html");
      /**
       Accept:text/html
       **/
      //2.3 發送一些數據
      conn.setDoOutput(true);
      OutputStream outputStream = conn.getOutputStream();
      // 編寫什麼樣格式的數據?  username=zhangsan&passwd=123
      outputStream.write("username=zhangsan&passwd=123".getBytes());
      outputStream.flush();
      outputStream.close();

      //3.獲取返回值
      InputStream inputStream = conn.getInputStream();
      //3.1 將輸入流轉換字符串
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
      //3.2 一次讀取bufferReader的數據
      String line =null;
      while((line=bufferedReader.readLine())!=null){
         System.out.println(line);
      }
      //4.關閉流
      inputStream.close();
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章