POST请求传入中文参数,接收端乱码

问题描述:通过post请求调试短信接口发送出去后,客户端无法收到短信,中文内容乱码

追踪过程:

  1. 接口采用post请求进行,无法收取短信的接口代码如下:
  2. public static String sendPost(String url, Map<String, String> paramMap) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");conn.setRequestProperty("Charset", "UTF-8");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 设置请求属性StringBuilder param = new StringBuilder();if (paramMap != null && paramMap.size() > 0) {Iterator<String> ite = paramMap.keySet().iterator();while (ite.hasNext()) {String key = ite.next();// keyString value = paramMap.get(key);param.append(key).append("=").append(value).append("&");}param = new StringBuilder(param.substring(0, param.length() - 1));}// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.err.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}

    其中的参数paramMap如下:
     

           Map<String, String> params = new HashMap<String, String>();params.put("userid", userid);params.put("ts", ts);params.put("sign", md5.toLowerCase());params.put("mobile", phones);params.put("msgcontent", "【您好!请注意】" + content);params.put("extnum", sendtermid);params.put("time", sendtime);

    问题的源头是其中的key 为msgContent的value中含有中文,而中文内容如果不通过URLEncoder.encode(param,"UTF-8"),"UTF-8")进行编码设置,那么会被默认的通过其他编码格式进行编码后发送出去,导致短信平台服务器接收到的短信内容是乱码

  3. 解决方案:在入参时进行UTF-8编码处理
URLEncoder.encode(URLEncoder.encode(param,"UTF-8"),"UTF-8"))

服务端获取参数时进行一次解码

 String param= URLDecoder.decode(param, "UTF-8");

感谢文章:https://my.oschina.net/gschen/blog/120553 

https://www.zhongjianghua.com/att1tude/131194-2020-12.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP/IP协议模型

1. 数据链路层 作用(1) 实现网卡接口的网络驱动&#xff0c;以处理数据在以太网线等物理媒介上的传输   (2) 网络驱动程序隐藏了不同物理网络的不同电气特性&#xff0c;为上层协议提供一个统一的接口 应用ARP和RARP(Reverse Address Resolve Protocol)即逆地址解析协议&am…

【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

目录(?)[-] xml控件代码重用includexml控件代码重用merge横屏和竖屏landsacpe portraitxml控件代码重用&#xff1a;include 如果我们定义一个控件&#xff0c;需要在不同的layout中重复使用&#xff0c;或者在同一个layout中重复使用&#xff0c;可以采用include的方式。例如…

读《数学之美》

数学之美 数学的发展实际上是不断的抽象和概括的过程 目录 数学之美 第一章 第二章&#xff08;从规则到统计&#xff09; 第三章 统计语言模型 第四章 分词 第五章 隐马尔科夫模型 第六章 信息的度量和作用 第七章 贾里尼克和和现代语言处理 第八章 简单之美——布…

java.lang.NoClassDefFoundError: org/apache/shiro/authc/AuthenticationToken

使用ieda构建web工程项目&#xff0c;启动tomcat报错&#xff1a; java.lang.NoClassDefFoundError: org/apache/shiro/authc/AuthenticationToken maven经过不断的clean&#xff0c;compile、package都没有作用&#xff0c;最后发现是因为compile后生成了jar包 于是手动在pom…

iOS屏幕尺寸和分辨率了解

1、截至目前为止&#xff0c;主流的iOS设备屏幕有以下几种&#xff1a; --------------- iPhone ---------- -------- iPad ------------ 2、iOS设备屏幕分辨率&#xff1a;&#xff08;ppi是像素密度单位【像素/英寸】&#xff0c;401ppi表示每英寸上有401个像素&#xff0…

java死锁检测

/*** author&#xff1a;cp* time&#xff1a;2021-2-24* Description: java死锁测试* 进程id查看命令&#xff1a;jsp 找到对应的进程id* 通过jstack 进程id 输出死锁信息** 如何定位死循环导致的其他线程阻塞等待&#xff1a;* linux下top命令查看cpu使用率较高的java进程&am…

spring技术内幕——深入解析spring架构与设计原理

林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;说&#xff1a;“我从心底认为&#xff0c;优秀的程序员与平庸的程序员之间的区别&#xff0c;是在于认为自己的代码重要还是数据结构更加重要。平庸的程序员眼里只有代码&#xff0c;优秀的程序员则关注数据结构及之前的关…

部署和调优 3.4 腾讯企业邮箱免费版 未完

浏览器输入腾讯的企业邮箱官网 exmail.qq.com 点右上角的 申请开通 最下面有个 免费版 填好基本信息 根据提示验证密保邮箱 转载于:https://www.cnblogs.com/wangshaojun/p/5079304.html

前端学习(1715):前端系列javascript之页面配置

test-page.vue <template><view>test-page</view> </template><script>export default {data() {return {}},methods: {}} </script><style></style>page.json {"pages": [ //pages数组中第一项表示应用启动页&a…

03|复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

目录 为什么需要复杂度分析&#xff1f; 大 O 复杂度表示法 时间复杂度分析 几种常见时间复杂度 空间复杂度分析 为什么需要复杂度分析&#xff1f; 事后统计法&#xff1a;代码跑一遍&#xff0c;通过统计、监控&#xff0c;就能得到算法执行的时间和占用的内存大小。这种…

前端学习(1716):前端系列javascript之页面配置下

page.vue {"pages": [ //pages数组中第一项表示应用启动页&#xff0c;参考&#xff1a;https://uniapp.dcloud.io/collocation/pages{"path" : "pages/test-page/test-page","style" : {"navigationBarTitleText":"t…