帮助文档>操作指南>调试方式 > 代码示例-Java

代码示例-Java

发布时间:2022-07-01 16:56

此示例是通过修改JVM中的网络设置来达到代理的效果,如果程序员有些请求不需要代理可以在代理请求之后再将JVM配置项改回默认项。支持http、https、socks5代理

代码

此代码以http和https代理为例:

  1. ``
  2.  
  3. ```java
  4. // 使用socks5代理配置
  5.  
  6.  
  7.  
  8. package com.qg;
  9.  
  10. import java.io.BufferedReader;
  11.  
  12. import java.io.IOException;
  13.  
  14. import java.io.InputStreamReader;
  15.  
  16. import java.net.*;
  17.  
  18. public class ProxyClient {
  19.  
  20. //用户key
  21.  
  22. private static String user = "key";
  23.  
  24. //用户密码
  25.  
  26. private static String password = "proxy_password";
  27.  
  28. //获取到的代理IP
  29.  
  30. private static String proxyIP = "127.0.0.1";
  31.  
  32. //获取到的代理端口
  33.  
  34. private static String proxyPort = "1080";
  35.  
  36. public static void main(String[] args) {
  37.  
  38. // 下面http、https代理和socks5代理只需要设置一个就可以
  39.  
  40. // 使用http代理和https代理
  41.  
  42. System.setProperty("http.proxySet", "true");
  43.  
  44. // 发起http请求时使用的代理服务器配置
  45.  
  46. System.setProperty("http.proxyHost", proxyIP);
  47.  
  48. System.setProperty("http.proxyPort", proxyPort);
  49.  
  50. // 发起https请求时使用的代理服务器配置
  51.  
  52. System.setProperty("https.proxyHost", proxyIP);
  53.  
  54. System.setProperty("https.proxyPort", proxyPort);
  55.  
  56. // 这行代码是身份验证的关键配置,不然身份验证不起作用
  57.  
  58. System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
  59.  
  60. System.setProperty("jdk.http.auth.proxying.disabledSchemes", "");
  61.  
  62. // 身份验证
  63.  
  64. Authenticator.setDefault(
  65.  
  66. new Authenticator() {
  67.  
  68. public PasswordAuthentication getPasswordAuthentication() {
  69.  
  70. return new PasswordAuthentication(
  71.  
  72. user, password.toCharArray());
  73.  
  74. }
  75.  
  76. }
  77.  
  78. );
  79.  
  80. sendRequest("http://httpbin.org/get");
  81.  
  82. sendRequest("https://httpbin.org/get");
  83.  
  84. }
  85.  
  86. public static void sendRequest(String urlStr) {
  87.  
  88. URL url;
  89.  
  90. &nbs; BufferedReader in;
  91.  
  92. StringBuilder result = new StringBuilder();
  93.  
  94. try {
  95.  
  96. url = new URL(urlStr);
  97.  
  98. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  99.  
  100. conn.connect();
  101.  
  102. in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  103.  
  104. String line;
  105.  
  106. while ((line = in.readLine()) != null) {
  107.  
  108. result.append(line);
  109.  
  110. }
  111.  
  112. conn.disconnect();
  113.  
  114. System.out.println("http status code:" conn.getResponseCode());
  115.  
  116. System.out.println("body: " result);
  117.  
  118. } catch (IOException e) {
  119.  
  120. e.printStackTrace();
  121.  
  122. }
  123.  
  124. }
  125.  
  126. }
  127. ```

如需使用socks5代理可以将main函数中的代码替换为:

  1. ```java
  2. // 使用socks5代理配置
  3. System.setProperty("socksProxyHost", proxyIP);
  4.  
  5. System.setProperty("socksProxyPort", proxyPort);
  6.  
  7. System.setProperty("socksProxyVersion", "5");
  8.  
  9. System.setProperty("java.net.socks.username", user);
  10.  
  11. System.setProperty("java.net.socks.password", password);
  12. ```
本文导读