Java Http GET POST发送请求
来源:互联网 发布:平胸的好处 知乎 编辑:程序博客网 时间:2024/05/12 01:37
Java Http GET POST发送请求
本文写了1个java 发送GET请求以及2个java 发送POST请求,新手,不喜勿喷!
背景:
这是一个使用魔宝支付的demo,首先需要移动端提交商城订单,请求平台签名接口进行签名并获取支付所需要的要素,对支付公司返回的信息验签后返回移动端这些要素,移动端启动支付公司SDK进行支付交易,后续还有接收交易结果通知消息。
说明
- GET核心:CloseableHttpClient和CloseableHttpResponse,HttpGet
- POST核心:HttpURLConnection和HttpPost
功能步骤说明
- 第一步:GET请求从服务器签名接口进行签名操作;
- 第二步:GET请求至魔宝支付进行获取支付所需要素;
- 第三步:POST验签魔宝返回的签名信息,防篡改
静态变量
- 订单信息:private static String tranData = “XML订单信息”;
- 签名接口:private static String signUrl = “http://10.3.30.17:8099/chpay/v1/pay/mobao/sign“;
- 验签接口private static String verifyUrl = “http://10.3.30.17:8099/chpay/v1/pay/mobao/signature/verify“;
- 魔宝接口:private static String mobaoUrl = “http://182.148.123.7:8132/service“;
第一步:签名
- 在交易之前需要使用支付方提供的证书进行签名交易订单
/*** 签名订单信息*/public static JSONObject testHttpGet(String data) throws UnsupportedEncodingException { CloseableHttpClient httpClient = HttpClients.custom().disableContentCompression().build(); StringBuffer qUrl = new StringBuffer(signUrl); qUrl.append("?tranData=" + URLEncoder.encode(data, "UTF-8")); HttpGet httpget = new HttpGet(new String(qUrl)); try { CloseableHttpResponse httpResponse = httpClient.execute(httpget); HttpEntity entity = httpResponse.getEntity(); //返回内容 String res = EntityUtils.toString(entity, "UTF-8"); return JSONObject.parseObject(res); } catch (IOException e) { e.printStackTrace(); } return null; }
第二步:获取支付要素
- 使用支付方规定的格式,签名后请求支付公司接口得到支付所需要的要素,支付公司返回要素以及签名信息
public static String getPayElements(JSONObject json) throws UnsupportedEncodingException { if (json.containsKey("message") && json.containsKey("signature")) { String message = json.getString("message"); String signature = json.getString("signature"); String param = "message=" + message + "&signature=" + signature; String paramEncode = URLEncoder.encode(param, "UTF-8"); CloseableHttpClient httpClient = HttpClients.custom().disableContentCompression().build(); StringBuffer qUrl = new StringBuffer(mobaoUrl); qUrl.append("?message=" + URLEncoder.encode(message, "UTF-8")); qUrl.append("&signature=" + URLEncoder.encode(signature, "UTF-8")); HttpGet httpget = new HttpGet(new String(qUrl)); try { CloseableHttpResponse httpResponse = httpClient.execute(httpget); HttpEntity entity = httpResponse.getEntity(); //返回内容 String res = EntityUtils.toString(entity, "UTF-8"); return res; } catch (IOException e) { e.printStackTrace(); } } return null; }
第三步:验签
- 获取支付要素时支付公司返回签名信息,需要进行验签,防止信息被篡改。
public static JSONObject verifySign(JSONObject jsonObject) { if (jsonObject.containsKey("message") && jsonObject.containsKey("signature")) { String message = jsonObject.getString("message"); String signature = jsonObject.getString("signature"); try { //创建连接 URL url = new URL(verifyUrl); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestMethod("POST"); connection.setUseCaches(false); connection.setInstanceFollowRedirects(true);// connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式 connection.setRequestProperty("Content-Type", "application/json"); connection.connect(); //POST请求 DataOutputStream out = new DataOutputStream(connection.getOutputStream()); JSONObject obj = new JSONObject(); obj.put("message", message); obj.put("signature", signature); out.writeBytes(obj.toString()); out.flush(); out.close(); //读取响应 BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String lines; StringBuffer sb = new StringBuffer(""); while ((lines = reader.readLine()) != null) { lines = new String(lines.getBytes(), "utf-8"); sb.append(lines); } reader.close(); // 断开连接 connection.disconnect(); return JSONObject.parseObject(sb.toString()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; }
附:另外一个POST请求方式
public static String post(String json, String url) throws Exception{ StringEntity entity = new StringEntity(json, "utf-8"); entity.setContentType("application/json"); DefaultHttpClient client = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(entity); HttpResponse response = client.execute(httpPost); InputStream inputStream = response.getEntity().getContent(); StringBuffer buffer = new StringBuffer(); InputStreamReader inputReader = new InputStreamReader(inputStream); BufferedReader bufferReader = new BufferedReader(inputReader); String str; while ((str = bufferReader.readLine()) != null) { buffer.append(str); } bufferReader.close(); String jsonOut = buffer.toString(); return jsonOut; }
我的联系方式:
- Q Q:1250052380
- 邮箱:1250052380@qq.com
1 0
- JAVA 发送Http请求,GET、POST请求
- java发送HTTP GET POST请求
- java发送get、post http请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java 发送http请求post get
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- java发送http的get、post请求
- leetcode Implement strStr()
- lua-5.1 和 lua-5.2 之间的一些差异。
- HTTP 1.1状态代码及其含义
- java得MAC地址及IP地址
- 关于Android WebView不支持window.location.href的解决方法
- Java Http GET POST发送请求
- Redis介绍及常用命令 ---主要是命令行操作
- Two sum
- Java的23种设计模式
- 给golang增加websocket模块
- 实现医生工作站的病历模板功能的代码(十)
- Java二维数组及常见相关算法讲解
- leetcode_Reverse Bits_easy
- 教你从redhat官网获取ISO镜像