java中使用hutool调用get请求,post请求

一、hutool工具包实现

1、get请求

// url:链接地址,params:填充在url中的参数, useProxy:是否使用代理
// proxyHost:代理地址, proxyPort:代理端口号
public String httpGet(String url, String params, String useProxy) {
        String requestUrl = url;
        if (StringUtils.isNotBlank(params)) {
            requestUrl = url + "?" + params;
        }
        String respData = null;
        log.info("httpGet req is 【{}】", params);
        HttpRequest httpRequest = HttpRequest.get(requestUrl).timeout(socketTimeout).header("token", 
                "application/json");
        if ("Y".equalsIgnoreCase(useProxy)) {
            log.info(String.format("使用代理"));
            httpRequest.setProxy(new Proxy(Proxy.Type.HTTP,
                    new InetSocketAddress(proxyHost, Integer.parseInt(proxyPort))));
        }
        respData = httpRequest.execute().body();
        log.info(String.format("HttpsUtil:httpGet | 请求信息:%s | 响应信息: %s", httpRequest.getUrl(), respData));
        return respData;
    }

2、post请求

    
// url:链接地址,params:填充在url中的参数, sendBodyData:body, useProxy:是否使用代理
// proxyHost:代理地址, proxyPort:代理端口号
public String httpPost(String url, String params, String sendBodyData, String useProxy) {
        String requestUrl = url;
        if (StringUtils.isNotBlank(params)) {
            requestUrl = url + "?" + params;
        }
        String respData = null;
        log.info("httpPost req is 【{}】", sendBodyData);
        HttpRequest httpRequest = HttpRequest.post(requestUrl).timeout(socketTimeout).header("Content-Type", "application/json");
        if ("Y".equalsIgnoreCase(useProxy)) {
            log.info(String.format("使用代理"));
            httpRequest.setProxy(new Proxy(Proxy.Type.HTTP,
                    new InetSocketAddress(proxyHost, Integer.parseInt(proxyPort))));
        }
        if (StringUtils.isNotBlank(sendBodyData)) {
            httpRequest.body(sendBodyData);
        }
        respData = httpRequest.execute().body();
        log.info(String.format("HttpsUtil:httpPost | 请求信息:%s | 响应信息: %s", httpRequest.getUrl(), respData));
        return respData;
    }

二、java net实现

1、java中http协议调用get请求

package com.bjbn.app.tianfu.mq.util;



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


public class GetMessage {

    public static String getHttpRequestData(String data) {


        // 首先抓取异常并处理
        String returnString = "1";
        try{
            // 代码实现以GET请求方式为主,POST跳过
            /** 1 GET方式请求数据 start*/
            StringBuilder sb = new StringBuilder();
            String urlP = "http://localhost:8500/main/dataAnalysis?data=";
            sb.append(urlP);
            data = URLEncoder.encode(data,"UTF-8");
            sb.append(data);


            // 1  创建URL对象,接收用户传递访问地址对象链接
            URL url = new URL(sb.toString());

            // 2 打开用户传递URL参数地址
            HttpURLConnection connect = (HttpURLConnection) url.openConnection();

            // 3 设置HTTP请求的一些参数信息
            connect.setRequestMethod("GET"); // 参数必须大写
            connect.connect();


            // 4 获取URL请求到的数据,并创建数据流接收
            InputStream isString = connect.getInputStream();

            // 5 构建一个字符流缓冲对象,承载URL读取到的数据
            BufferedReader isRead = new BufferedReader(new InputStreamReader(isString));

            // 6 输出打印获取到的文件流
            String str = "";
            while ((str = isRead.readLine()) != null) {
                str = new String(str.getBytes(),"UTF-8"); //解决中文乱码问题
//          System.out.println("文件解析打印:");
//          System.out.println(str);
                returnString = str;
            }

            // 7 关闭流
            isString.close();
            connect.disconnect();

            // 8 JSON转List对象
            // do somthings

        }catch(Exception e){
            e.printStackTrace();
        }

        return returnString;
    }

    public static void main(String[] args) {
        String data = "111111";
        String httpRequestData = getHttpRequestData(data);
        System.out.println(httpRequestData);

    }
}

2、java中https协议调用get请求

 
 
import javax.net.ssl.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
 
public class HttpUtils1 {
	private static final String ENCODING = "UTF-8";
 
 
	public static void main(String args[]) {
 
		// get方式调用接口 
		String resultString = httpGet("https://xxxxx?systemCode=1&apiCode=1&accessCode=xxxx");
 
		// 获取接口信息
		System.out.println(resultString);
	}
 
 
	final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
		public boolean verify(String hostname, SSLSession session) {
			return true;
		}
	};
	/**
	 * Trust every server - dont check for any certificate
	 */
	private static void trustAllHosts() {
		final String TAG = "trustAllHosts";
		// Create a trust manager that does not validate certificate chains
		TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
			public X509Certificate[] getAcceptedIssuers() {
				return new X509Certificate[] {};
			}
			public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
			}
			public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
			}
		} };
		// Install the all-trusting trust manager
		try {
			SSLContext sc = SSLContext.getInstance("TLS");
			sc.init(null, trustAllCerts, new java.security.SecureRandom());
			HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 
 
	public static String httpGet(String httpUrl) {
		BufferedReader input = null;
		StringBuilder sb = null;
		URL url = null;
		HttpURLConnection con = null;
		try {
			url = new URL(httpUrl);
			try {
				// trust all hosts
				trustAllHosts();
				HttpsURLConnection https = (HttpsURLConnection)url.openConnection();
				if (url.getProtocol().toLowerCase().equals("https")) {
					https.setHostnameVerifier(DO_NOT_VERIFY);
					con = https;
				} else {
					con = (HttpURLConnection)url.openConnection();
				}
				input = new BufferedReader(new InputStreamReader(con.getInputStream()));
				sb = new StringBuilder();
				String s;
				while ((s = input.readLine()) != null) {
					sb.append(s).append("\n");
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (MalformedURLException e1) {
			e1.printStackTrace();
		} finally {
			// close buffered
			if (input != null) {
				try {
					input.close();
				} catch (IOException e) {
					e.printStackTrace();
				}}
 
			// disconnecting releases the resources held by a connection so they may be closed or reused
			if (con != null) {
				con.disconnect();
			}
		}
		return sb == null ? null : sb.toString();
	}
}

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值