java網絡URL請求編程入門


對於使用URL類請求網絡服務器並接受請求進行簡單處理的示例,記錄下學習過程。

 

 

 

  • GET請求

  1. 代碼示例如下

    package testHttpGet;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class TestGet {
        public static void main(String[] args) {
            new ReadByGet().start();
        }
        
        static class ReadByGet extends Thread{
            @Override
            public void run() {
                try {
                    //根據URL地址創建一個URL對象
                    URL url = new URL("https://easy-mock.com/mock/5c2f632779696b7e93ba23d6/example/testhttpget");
                    
                    //獲取URL連接,open方法返回一個URLConnection類的對象
                    URLConnection conn = url.openConnection();
                    
                    //從連接獲取輸入流,請求的輸入也就是對請求的輸入,即是相應,
                    InputStream in = conn.getInputStream();
                    InputStreamReader is = new InputStreamReader(in);
                    
                    //將字節流轉換成字符流,方便操作
                    BufferedReader br = new BufferedReader(is);
                    String line = null;
                    while((line = br.readLine())!=null) {
                        //打印相應的內容
                        System.out.println(line);
                    }
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    結果:返回一個html頁面

     

     

  2. 內部類如果在靜態方法里面創建對象必須是靜態內部類,或者將其聲明在外部。

 

 

  • POST請求

  1. 代碼示例如下:
    package testHttpGet;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class TestHttpPost {
        public static void main(String[] args) {
            new ReadByPost().start();
        }
        
        static class ReadByPost extends Thread{
            @Override
            public void run() {
                try {
                    URL url = new URL("https://easy-mock.com/mock/5c2f632779696b7e93ba23d6/example/testhttpget");
                    
                    //返回一個HttpURLConnection對象,他繼承自URLConnection,
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    
                    //設置請求頭
                    conn.addRequestProperty("encoding", "utf-8");
                    
                    //設置允許對請求輸入和輸出參數,也就是對請求加上參數
                    conn.setDoInput(true);
                    conn.setDoOutput(true);
                    
                    //設置請求方式為POST
                    conn.setRequestMethod("POST");
                    
                    OutputStream out = conn.getOutputStream();
                    OutputStreamWriter owt = new OutputStreamWriter(out);
                    BufferedWriter bw = new BufferedWriter(owt);
                    //對請求設置參數
                    bw.write("name=Tom&age=18");
                    
                    //獲取請求的響應,輸入流
                    InputStream in = conn.getInputStream();
                    InputStreamReader is = new InputStreamReader(in);
                    BufferedReader br = new BufferedReader(is);
                    String line = null;
                    while((line = br.readLine()) != null) {
                        System.out.println(line);
                    }
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    注意點:設置請求參數之前必須先設置請求方式為POST,否則會拋出異常,輸入流和輸出流的先后順序也不能顛倒,因為是先請求再得到響應,所以是輸出流在前,為請求設置請求參數,
    輸入流在后,就是得到的響應的具體內容!

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM