JAVA maven集成Http请求工具类

it2023-01-18  72

代码下载

加载需要的jar

<!-- 解决编译时,报程序包javax.servlet不存在的错误 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <!-- 只在编译和测试的时候用 --> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.3.4.RELEASE</version> </dependency>

代码

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.Charset; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.Map; import javax.net.ssl.SSLContext; import javax.servlet.http.HttpServletRequest; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContexts; import org.apache.http.ssl.TrustStrategy; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.apache.http.Header; import com.alibaba.fastjson.JSONObject; public class HttpUtil { private static final Logger logger = LoggerFactory.getLogger(HttpUtil.class); public static String readJSONString(HttpServletRequest request) { String method = request.getMethod(); if (method == "GET") { return request.getQueryString(); } else { StringBuffer json = new StringBuffer(); String line = null; try { BufferedReader reader = request.getReader(); while ((line = reader.readLine()) != null) { json.append(line); } } catch (Exception e) { System.out.println(e.toString()); } return json.toString(); } } public static JSONObject readJSONParam(HttpServletRequest request) { String method = request.getMethod(); if (method == "GET") { return JSONObject.parseObject(request.getQueryString()); } else { StringBuffer json = new StringBuffer(); String line = null; try { BufferedReader reader = request.getReader(); while ((line = reader.readLine()) != null) { json.append(line); } } catch (Exception e) { System.out.println(e.toString()); } return JSONObject.parseObject(json.toString()); } } public static ResponseEntity<String> GetResponseEntity(String result) { HttpHeaders responseHeaders = new HttpHeaders(); MediaType mediaType = new MediaType("text", "html", Charset.forName("UTF-8")); responseHeaders.setContentType(mediaType); return new ResponseEntity<String>(result, responseHeaders, HttpStatus.OK); } /** * 获得一个忽略证书的HttpClient * * @return * @throws Exception */ public static HttpClient getCertificateValidationIgnoredHttpClient() throws Exception { SSLContext sslContext = SSLContexts.custom() // 忽略掉对证书的校验 .loadTrustMaterial(new TrustStrategy() { @Override public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { return true; } }).build(); CloseableHttpClient client = HttpClients.custom().setSSLContext(sslContext) .setSSLHostnameVerifier(new NoopHostnameVerifier()).build(); return client; } public static JSONObject doGetRequest(String requestUrl) { JSONObject jsonObject = null; StringBuffer buffer = new StringBuffer(); try { URL url = new URL(requestUrl); // http协议传输 HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoOutput(true); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); // 设置请求方式(GET/POST) httpUrlConn.setRequestMethod("GET"); httpUrlConn.connect(); // 将返回的输入流转换成字符串 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } bufferedReader.close(); inputStreamReader.close(); // 释放资源 inputStream.close(); inputStream = null; httpUrlConn.disconnect(); jsonObject = JSONObject.parseObject(buffer.toString()); } catch (Exception e) { e.printStackTrace(); } return jsonObject; } /** * post请求 * * @param url * @param json * @return */ public static JSONObject doPostRequest(String requestUrl, JSONObject json,JSONObject header) { CloseableHttpClient client = HttpClientBuilder.create().build(); HttpPost post = new HttpPost(requestUrl); JSONObject response = null; try { // ContentType contentType = // ContentType.create(ContentType.DEFAULT_TEXT,Charsets.UTF_8); StringEntity s = new StringEntity(json.toString(), ContentType.APPLICATION_JSON); s.setContentEncoding("UTF-8"); s.setContentType("application/json");// 发送json数据需要设置contentType for (String key: header.keySet()){ post.addHeader(key,header.getString(key)); } post.setEntity(s); HttpResponse res = client.execute(post); if (res.getStatusLine().getStatusCode() == org.apache.http.HttpStatus.SC_OK) { HttpEntity entity = res.getEntity(); String result = EntityUtils.toString(res.getEntity());// 返回json格式: response = JSONObject.parseObject(result); } } catch (Exception e) { throw new RuntimeException(e); } return response; } /** * 返回byte[] 字节数据 post 请求 * * @param requestUrl * @param json * @return */ public static byte[] doPostRequestByte(String requestUrl, JSONObject json) throws Exception { DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(requestUrl); byte[] result = null; try { logger.info("数据 post 请求"); // ContentType contentType = // ContentType.create(ContentType.DEFAULT_TEXT,Charsets.UTF_8); StringEntity s = new StringEntity(json.toString(), ContentType.APPLICATION_JSON); s.setContentEncoding("UTF-8"); s.setContentType("application/json");// 发送json数据需要设置contentType post.setEntity(s); logger.info("数据 post 请求1"); HttpResponse res = client.execute(post); logger.info("结果:" + res.getStatusLine().getStatusCode()); logger.info("结果:" + res); if (res.getStatusLine().getStatusCode() == org.apache.http.HttpStatus.SC_OK) { HttpEntity entity = res.getEntity(); result = EntityUtils.toByteArray(res.getEntity());// 返回图片二进制格式: } } catch (Exception e) { logger.info("post错误" + e); throw new RuntimeException(e); } logger.info("fanhui", result); return result; } }
最新回复(0)