HttpClient发送请求

HttpClient发送请求

最近做项目,需要用到HttpClient,就花了点时间封装了下,不足还望指点。

核心服务

package com.hollysys.tn.util;

import java.io.IOException;
import java.io.InputStreamReader;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.ssl.TrustStrategy;
import org.apache.http.util.CharArrayBuffer;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSON;

import javax.net.ssl.SSLContext;


@Component
public class HttpClient {

	public static final Log log = LogFactory.getLog(HttpClient.class);

	public static HttpResponse sendPost(HttpRequest request) {
		HttpResponse result = new HttpResponse();
		CloseableHttpClient httpClient = HttpClients.createDefault();
		HttpPost post = new HttpPost(request.getUrl());
		CloseableHttpResponse response = null;
		try {
			post.setEntity(new ByteArrayEntity(request.getParam().getBytes("UTF-8")));
			post.setHeader("Cookie", request.getCookie());
			post.setHeader("Content-Type", request.getContentType());
			post.setHeader("charset", request.getCharset());
			response = httpClient.execute(post);
			if (response != null && response.getStatusLine().getStatusCode() == 200) {
				HttpEntity entity = response.getEntity();
				result.setData(entityToString(entity, request.getResponseCharset()));
			} else {
				String s = response.getStatusLine().toString();
				result.setMsg(s);
			}
			log.info("result:" + JSON.toJSONString(result));
			return result;
		} catch (Exception e) {
			log.error(e.getMessage(), e);
			result.setCode(500);
			result.setMsg(e.getMessage());
			return result;
		} finally {
			try {
				httpClient.close();
				if (response != null) {
					response.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	public static HttpResponse sendGet(HttpRequest request) {
		long start = System.currentTimeMillis();
		HttpResponse result = new HttpResponse();
//		CloseableHttpClient httpClient = HttpClients.createDefault();
		CloseableHttpClient httpClient = null;
		HttpGet get = new HttpGet(request.getUrl());
		get.setHeader("Cookie", request.getCookie());
		get.setHeader("Content-Type", request.getContentType());
		get.setHeader("charset", request.getCharset());
		CloseableHttpResponse response = null;
		
	    TrustStrategy acceptingTrustStrategy = new TrustSelfSignedStrategy();
		try {
			SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy)
			        .build();
		    SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
		    httpClient = HttpClients.custom().setSSLSocketFactory(csf).build();
		    
		} catch (KeyManagementException | NoSuchAlgorithmException | KeyStoreException e1) {
			e1.printStackTrace();
		}
		
		try {
			response = httpClient.execute(get);
			if (response != null && response.getStatusLine().getStatusCode() == 200) {
				HttpEntity entity = response.getEntity();
				Header lastHeader = response.getLastHeader("Set-Cookie");
				if (lastHeader != null) {
					result.setCookieHeader(lastHeader.getValue());
				}
				result.setCode(response.getStatusLine().getStatusCode());
				result.setData(entityToString(entity, request.getResponseCharset()));

			} else {
				String s = response.getStatusLine().toString();
				result.setMsg(s);
				result.setCode(response.getStatusLine().getStatusCode());
			}
			log.info("result:" + JSON.toJSONString(result));
			long end = System.currentTimeMillis();
			log.info("result:" + (end - start) + "ms");
			return result;
		} catch (Exception e) {
			log.error("error:" + e.getMessage(), e);
			result.setCode(500);
			result.setMsg(e.getMessage());
			return result;
		} finally {
			try {
				httpClient.close();
				if (response != null) {
					response.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	private static String entityToString(HttpEntity entity, String responseCharset) throws IOException {
		String result = null;
		if (entity != null) {
			long lenth = entity.getContentLength();
			if (lenth != -1 && lenth < 2048) {
				result = EntityUtils.toString(entity, responseCharset);
			} else {
				InputStreamReader reader1 = new InputStreamReader(entity.getContent(), responseCharset);
				CharArrayBuffer buffer = new CharArrayBuffer(2048);
				char[] tmp = new char[1024];
				int l;
				while ((l = reader1.read(tmp)) != -1) {
					buffer.append(tmp, 0, l);
				}
				result = buffer.toString();
			}
		}
		return result;
	}
}

调用实列

package com.hollysys.tn;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.hollysys.tn.entity.Detail;
import com.hollysys.tn.entity.Device;
import com.hollysys.tn.entity.DeviceLotTime;
import com.hollysys.tn.entity.Lot;
import com.hollysys.tn.entity.ProductDetail;
import com.hollysys.tn.entity.ProductLine;
import com.hollysys.tn.entity.ProductYield;
import com.hollysys.tn.service.IndexMethodService;
import com.hollysys.tn.service.LotService;
import com.hollysys.tn.service.ProductDetailService;
import com.hollysys.tn.service.ProductLineService;
import com.hollysys.tn.service.ProductYieldService;
import com.hollysys.tn.util.DateUtil;
import com.hollysys.tn.util.HttpClient;
import com.hollysys.tn.util.HttpRequest;
import com.hollysys.tn.util.HttpResponse;


@RunWith(SpringRunner.class)
@SpringBootTest(classes = TNmedicineApplication.class)
public class TNmedicineApplicationTests {
	
		
	private static String url = "https://*****:8182/scada/v1/ua/model/node/rtdb/ns=100%3Bs=AI_001_001.PV"; 
	
	@Test
	public void testHttpClient(){
		HttpClient httpClient = new HttpClient();
		HttpRequest httpRequest = new HttpRequest();
		httpRequest.setUrl(url);
		HttpResponse httpResponse = httpClient.sendGet(httpRequest);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值