Java使用代理進行網路連線方法示例

我就是女王發表於2023-10-20

在Java進行網路連線時,我們會經常遇到需要使用代理的情況,這時候就需要使用Java提供的Proxy類來進行代理設定。本篇文章將詳細講解Java使用代理進行網路連線的方法,並提供兩條示例說明。

1. 什麼是代理?

代理是一種計算機網路技術,其作用是客戶端將請求傳送給代理伺服器,由代理伺服器代為向目標伺服器傳送請求並獲取資料,最後將結果返回給客戶端。代理可以用於很多場景,如部署在防火牆上用於對外提供服務等。


2. Java代理設定方法

Java提供了Proxy類來進行代理設定,下面是使用Proxy類進行代理設定的步驟:


建立代理例項,需要傳入代理型別(http或socks)和代理地址及埠;


使用代理例項建立連線,代理資訊會被新增至連線中。


示例程式碼如下:


    // 建立代理例項

    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8080));


    // 使用代理建立連線

    URL url = new URL(");

    URLConnection conn = url.openConnection(proxy);

    InputStream is = conn.getInputStream();

在上述示例中,我們建立了一個http型別的代理例項,並將代理地址設定為127.0.0.1:8080。接著,我們使用代理例項建立了一個URL連線,並在連線中新增了代理資訊。最後,我們使用連線的getInputStream方法獲取輸入流,以讀取返回的資料。


3. 示例一:使用代理獲取網頁內容

下面是一個具體的示例,我們將使用代理獲取指定URL的網頁內容:


import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.InetSocketAddress;

import java.net.Proxy;

import java.net.URL;

import java.net.URLConnection;


public class ProxyExample {

    public static void main(String[] args) throws Exception {

        // 建立代理例項

        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8080));


        // 使用代理建立連線

        URL url = new URL(");

        URLConnection conn = url.openConnection(proxy);


        // 讀取返回的資料

        InputStream is = conn.getInputStream();

        InputStreamReader isr = new InputStreamReader(is);

        BufferedReader br = new BufferedReader(isr);


        String line;

        while ((line = br.readLine()) != null) {

            System.out.println(line);

        }

        br.close();

    }

}

在上述示例中,我們使用了上文提到的代理設定方法建立了一個http型別的代理例項,並將代理地址設定為127.0.0.1:8080。接著,我們使用代理例項建立了一個URL連線,並在連線中新增了代理資訊。最後,我們使用連線的getInputStream方法獲取輸入流,並讀取返回的資料。



4. 示例二:使用代理傳送POST請求

下面是另外一個示例,我們將使用代理傳送一個POST請求,並讀取返回結果:


import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.InetSocketAddress;

import java.net.Proxy;

import java.net.URL;

import java.net.URLEncoder;


public class ProxyExample {

    public static void main(String[] args) throws Exception {

        // 建立代理例項

        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8080));


        // 建立POST請求並設定引數

        URL url = new URL(");

        String param = "param1=" + URLEncoder.encode("value1", "UTF-8");

        HttpURLConnection conn = (HttpURLConnection)url.openConnection(proxy);

        conn.setRequestMethod("POST");

        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        conn.setRequestProperty("Content-Length", "" + Integer.toString(param.getBytes().length));

        conn.setUseCaches(false);

        conn.setDoInput(true);

        conn.setDoOutput(true);


        // 傳送POST請求

        DataOutputStream wr = new DataOutputStream(conn.getOutputStream());

        wr.writeBytes(param);

        wr.flush();

        wr.close();


        // 讀取返回的資料

        InputStream is = conn.getInputStream();

        InputStreamReader isr = new InputStreamReader(is);

        BufferedReader br = new BufferedReader(isr);


        String line;

        while ((line = br.readLine()) != null) {

            System.out.println(line);

        }

        br.close();

    }

}

在上述示例中,我們首先建立了一個http型別的代理例項,並將代理地址設定為127.0.0.1:8080。接著,我們建立了一個POST請求,並設定了請求引數及請求頭資訊。然後,我們使用代理例項建立了一個URLConnection連線,並在連線中新增了代理資訊。接著,我們使用連線的getOutputStream方法傳送POST請求,並讀取返回的資料。注意,在傳送POST請求時需要設定請求引數及請求頭資訊,否則伺服器可能會拒絕請求。


5. 總結

透過本文的介紹,我們學習了在Java中如何使用代理進行網路連線,並提供了兩條使用代理的示例。需要注意的是,在使用代理時需要先建立代理例項,並在連線中新增代理資訊。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70033972/viewspace-2990196/,如需轉載,請註明出處,否則將追究法律責任。

相關文章