首页 > 编程知识 正文

java调用http接口,java http

时间:2023-05-05 07:52:20 阅读:263526 作者:4017

一、直接设置系统属性,设置后所有网络请求都有效

System.setProperty("proxyType", "4"); System.setProperty("proxyPort", "80")); System.setProperty("proxyHost", "127.0.0.1"); System.setProperty("proxySet", "true");

二、用用java.net.Proxy类

package test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.InetSocketAddress;import java.net.Proxy;import java.net.URL;import java.net.Proxy.Type;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;public class HttpAndHttpsProxy { public static String HttpsProxy(String url, String param, String proxy, int port) { HttpsURLConnection httpsConn = null; PrintWriter out = null; BufferedReader in = null; String result = ""; BufferedReader reader = null; try { URL urlClient = new URL(url); System.out.println("请求的URL========:" + urlClient); SSLContext sc = SSLContext.getInstance("SSL"); // 指定信任https sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom()); //创建代理虽然是https也是Type.HTTP Proxy proxy1=new Proxy(Type.HTTP, new InetSocketAddress(proxy, port)); //设置代理 httpsConn = (HttpsURLConnection) urlClient.openConnection(proxy1); httpsConn.setSSLSocketFactory(sc.getSocketFactory()); httpsConn.setHostnameVerifier(new TrustAnyHostnameVerifier()); // 设置通用的请求属性 httpsConn.setRequestProperty("accept", "*/*"); httpsConn.setRequestProperty("connection", "Keep-Alive"); httpsConn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 httpsConn.setDoOutput(true); httpsConn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(httpsConn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(httpsConn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } // 断开连接 httpsConn.disconnect(); System.out.println("====result===="+result); System.out.println("返回结果:" + httpsConn.getResponseMessage()); } catch (Exception e) { e.printStackTrace(); } finally { try { if (reader != null) { reader.close(); } } catch (IOException e) { } try { if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } if (out != null) { out.close(); } } return result; } public static String HttpProxy(String url, String param, String proxy, int port) { HttpURLConnection httpConn = null; PrintWriter out = null; BufferedReader in = null; String result = ""; BufferedReader reader = null; try { URL urlClient = new URL(url); System.out.println("请求的URL========:" + urlClient); //创建代理 Proxy proxy1=new Proxy(Type.HTTP, new InetSocketAddress(proxy, port)); //设置代理 httpConn = (HttpURLConnection) urlClient.openConnection(proxy1); // 设置通用的请求属性 httpConn.setRequestProperty("accept", "*/*"); httpConn.setRequestProperty("connection", "Keep-Alive"); httpConn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 httpConn.setDoOutput(true); httpConn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(httpConn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(httpConn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } // 断开连接 httpConn.disconnect(); System.out.println("====result===="+result); System.out.println("返回结果:" + httpConn.getResponseMessage()); } catch (Exception e) { e.printStackTrace(); } finally { try { if (reader != null) { reader.close(); } } catch (IOException e) { } try { if (in != null) { in.close(); } } catch (IOException e) { e.printStackTrace(); } if (out != null) { out.close(); } } return result; } private static class TrustAnyTrustManager implements X509TrustManager { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[] {}; } } private static class TrustAnyHostnameVerifier implements HostnameVerifier { public boolean verify(String hostname, SSLSession session) { return true; } } public static void main(String[] args) { HttpsProxy("https://www.baidu.com//", "", "127.0.0.1", 81); HttpProxy("http://www.aseoe.com/", "", "127.0.0.1", 81); }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。