发送关键代码如下
URL url = new URL(apiUrl);//根据参数创建URL对象
HttpURLConnection con = (HttpURLConnection) url.openConnection();//得到HttpURLConnection对象
con.setRequestMethod("POST");
con.setReadTimeout(5000);
con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setInstanceFollowRedirects(true);
con.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.connect();
PrintStream out = new PrintStream(con.getOutputStream()) {
};
JSONObject object = new JSONObject();
Map<String, String> map = new HashMap<String, String>();
map.put("pn", pnInfo);
map.put("type", pnType);
BASE64Encoder enc = new BASE64Encoder();
System.out.println(map.toString());
byte[] se = SecurityTool.AESEncrypt(map.toString(), requestSecret);
object.put("resp_body", enc.encode(se));
out.print(object.toString());
out.flush();
out.close();
之前发现byte[]数组发送的到了接口之后request取出来数据会改变,查了一些资料和看了一些博客,好像是因为byte组合不能够
映射所有的char,所以会导致错误,然后用加密后的子串用base64编码之后再发送,数据好像正常了一点,但是在request里面还是会有问题
这是发送前的body
这是发送后的body
可以看到,key里面包含了发送前的key和value,而且body不仅后面的等号没了,连中间的加号也没了,value里面居然还有一个括号。。。实在不清楚到底是什么机制来进行参数传递的,不能够将key和value分开就算了,还对一些符号进行删减
这个问题困扰了2天,实在没找到什么解决方法,特地来求助大神,自己java开发经验尚浅,想看源码,点进去感觉就出不来了。。高分求助,谢谢