说明:将json格式的字符拼接成需要的url post请求
1.json格式的字符
{<br />
"notifyStr": {<br />
"charset": "utf-8",<br />
"biz_content": "{\"mer_id\":\"02360\",\"bank_disc_amt\":0,\"mer_disc_amt\":0,\"pay_time\":\"20170901\",\"attach\":\"\",\"cust_id\":\"GC75JOxg3UFjG\",\"order_id\":\"0209010780760\",\"out_trade_no\":\"P1708181ec800000001\",\"total_amt\":1,\"coupon_amt\":0,\"payment_amt\":1,\"card_no\":\"622202*********9149\",\"return_msg\":\"success\",\"ecoupon_amt\":0,\"total_disc_amt\":0,\"msg_id\":\"020099210780760\",\"point_amt\":0,\"return_code\":\"0\"}",<br />
"format": "json",<br />
"sign": "JdjqDJD71rur7a48e/conMlG0lY6sryvTmLDe9tA0EyxjpcspnvBhsafUTtTkdQ6fZ1Qqj2K+75ELFfCVmhdydeTLpXX27KmTNBRtO5euLLZEJjFx7XWT6UWK3kHlTcFbkAl+smNRfsfplg=",<br />
"from": "hou-api",<br />
"api": "/ui/thirdparty/order/V1/pay",<br />
"app_id": "100000036501",<br />
"sign_type": "RSA",<br />
"timestamp": "2017-08-18 18:48:14"<br />
},<br />
"serial": "P170ec800000001"<br />
}<br />
```<br />
<br />
### 2.将json转换为Java对象<br />
```bash<br />
public class NotifyReqDTO implements Serializable {<br />
private static final long serialVersionUID = -4715222968104483630L;<br />
<br />
/**<br />
* 流水号<br />
*/<br />
private String serial;<br />
<br />
/**<br />
* 格式报文<br />
*/<br />
private Map<String, String> notifyStr;<br />
<br />
public String getSerial() {<br />
return serial;<br />
}<br />
<br />
public void setSerial(String serial) {<br />
this.serial = serial;<br />
}<br />
<br />
public Map<String, String> getNotifyStr() {<br />
return notifyStr;<br />
}<br />
<br />
public void setNotifyStr(Map<String, String> notifyStr) {<br />
this.notifyStr = notifyStr;<br />
}<br />
}<br />
```<br />
<br />
### 3.拼接处理-java代码<br />
```bash<br />
package com.houxiurong.utils;<br />
<br />
import com.alibaba.fastjson.JSON;<br />
import org.slf4j.Logger;<br />
import org.slf4j.LoggerFactory;<br />
<br />
import java.util.ArrayList;<br />
import java.util.Collections;<br />
import java.util.List;<br />
import java.util.Map;<br />
<br />
/**<br />
* Created by houxiurong on 2017/8/14.<br />
*/<br />
public class SignUtils {<br />
<br />
private static Logger logger = LoggerFactory.getLogger(SignUtils.class);<br />
<br />
<span style="white-space:pre;"> </span>/**<br />
* 签参数组装<br />
*<br />
* @param params<br />
* @return<br />
*/<br />
public static String buildMapSignString(Map<String, String> params) {<br />
List<String> keys = new ArrayList<String>(params.size());<br />
for (String key : params.keySet()) {<br />
if ("sign".equals(key))<br />
continue;<br />
keys.add(key);<br />
}<br />
Collections.sort(keys);<br />
StringBuilder buf = new StringBuilder();<br />
for (int i = 0; i < keys.size(); i++) {<br />
String key = keys.get(i);<br />
String value = params.get(key);<br />
if (i == keys.size() - 1) {<br />
buf.append(key + "=" + value);<br />
} else {<br />
buf.append(key + "=" + value + "&");<br />
}<br />
}<br />
return buf.toString();<br />
}<br />
<br />
}<br />
```<br />
### 3.将上面的json转换为java对象,使用alibaba.fastjaon的JSON工具<br />
```bash<br />
public void static main(String[] args){<br />
<span style="white-space:pre;"> </span>String strObject ="{\n" +<br />
" \"notifyStr\": {\n" +<br />
" \"charset\": \"utf-8\",\n" +<br />
" \"biz_content\": \"{\\\"mer_id\\\":\\\"02360\\\",\\\"bank_disc_amt\\\":0,\\\"mer_disc_amt\\\":0,\\\"pay_time\\\":\\\"20170901\\\",\\\"attach\\\":\\\"\\\",\\\"cust_id\\\":\\\"GC75JOxg3UFjG\\\",\\\"order_id\\\":\\\"0209010780760\\\",\\\"out_trade_no\\\":\\\"P1708181ec800000001\\\",\\\"total_amt\\\":1,\\\"coupon_amt\\\":0,\\\"payment_amt\\\":1,\\\"card_no\\\":\\\"622202*********9149\\\",\\\"return_msg\\\":\\\"success\\\",\\\"ecoupon_amt\\\":0,\\\"total_disc_amt\\\":0,\\\"msg_id\\\":\\\"020099210780760\\\",\\\"point_amt\\\":0,\\\"return_code\\\":\\\"0\\\"}\",\n" +<br />
" \"format\": \"json\",\n" +<br />
" \"sign\": \"JdjqDJD71rur7a48e/conMlG0lY6sryvTmLDe9tA0EyxjpcspnvBhsafUTtTkdQ6fZ1Qqj2K+75ELFfCVmhdydeTLpXX27KmTNBRtO5euLLZEJjFx7XWT6UWK3kHlTcFbkAl+smNRfsfplg=\",\n" +<br />
" \"from\": \"hou-api\",\n" +<br />
" \"api\": \"/ui/thirdparty/order/V1/pay\",\n" +<br />
" \"app_id\": \"100000036501\",\n" +<br />
" \"sign_type\": \"RSA\",\n" +<br />
" \"timestamp\": \"2017-08-18 18:48:14\"\n" +<br />
" },\n" +<br />
" \"serial\": \"P170ec800000001\"\n" +<br />
"}";<br />
<br />
<span style="white-space:pre;"> </span>NotifyReqDTO notifyReqDTO = JSON.parseObject(strObject, NotifyReqDTO.class);<br />
String formatStr = SignUtils.buildMapSignString(params);<br />
System.out.println("formatStr:" + formatStr);<br />
String formatResponseStr = "/houxiurong/notify/" + NotifyReqDTO.getSerial() + "?" + formatStr;<br />
String houSign = SignUtils.getSign(NotifyReqDTO.getNotifyStr());<br />
System.out.println("formatStr:" + formatStr);<br />
}<br />
```<br />
原文来自:http://xrhou.github.io<span style="color:#555555;font-family:"font-size:14px;white-space:normal;background-color:#FFFFFF;"><br />
</span>
评论一下?