JAVA maven集成Http请求工具类

代码下载

加载需要的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;
	}

}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
当然,我可以为您提供一个Java-Spring Boot集成银联充值的案例。下面是一个简单的示例代码: 首先,您需要添加银联支付SDK的依赖项到您的项目中。您可以在Maven或Gradle中添加以下依赖项: ```xml <dependency> <groupId>com.unionpay</groupId> <artifactId>acp-sdk</artifactId> <version>1.0.0</version> </dependency> ``` 接下来,您需要创建一个Controller类来处理充值请求和回调通知: ```java @RestController @RequestMapping("/payment") public class PaymentController { @PostMapping("/recharge") public String recharge(@RequestParam("orderId") String orderId, @RequestParam("amount") String amount) { // 构建支付请求参数 Map<String, String> requestData = new HashMap<>(); requestData.put("orderId", orderId); requestData.put("txnAmt", amount); // 其他参数... // 发送支付请求 Map<String, String> responseData = UnionPayUtils.postRequest(requestData); // 处理支付结果 String respCode = responseData.get("respCode"); if ("00".equals(respCode)) { // 支付成功逻辑 return "Payment success"; } else { // 支付失败逻辑 return "Payment failed"; } } @PostMapping("/notify") public void notifyCallback(HttpServletRequest request, HttpServletResponse response) throws IOException { // 解析回调通知参数 Map<String, String> responseData = UnionPayUtils.parseNotifyData(request.getParameterMap()); // 处理回调通知结果 String respCode = responseData.get("respCode"); if ("00".equals(respCode)) { // 回调处理成功逻辑 response.getWriter().write("success"); } else { // 回调处理失败逻辑 response.getWriter().write("fail"); } } } ``` 在上述代码中,`recharge`方法处理充值请求,构建支付请求参数并发送支付请求,然后根据支付结果进行逻辑处理。`notifyCallback`方法处理银联的回调通知,解析通知参数并根据结果进行逻辑处理。 最后,您需要编写工具类`UnionPayUtils`来处理银联支付相关的操作,例如发送请求、解析回调通知等。 这只是一个简单的示例代码,实际的集成可能需要更多的逻辑和安全性处理。希望这个例子对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天也想MK代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值