问题描述:通过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

POST请求传入中文参数,接收端乱码相关推荐

  1. cocos creator ios回调js代码传入中文参数出现乱码的解决

    ios原生端调用js代码.需要先将oc的字符串变量转为c++字符串或者字符指针.但是如果需要传值给js端的话,特别是中文的话,就会出现问题.oc转c++会用到utf8编码. 但是如果是中文的话,还需要 ...

  2. springmvcget中文乱码_解决SpringMVC Controller 接收页面传递的中文参数出现乱码的问题...

    新配置一个spring的MVC项目,发现对Get请求的中文参数出现了乱码: 查看了SpingMVC中关于编码的配置(在web.xml中),如下: encodingFilter org.springfr ...

  3. java.net.url 中文乱码_asp.net URL中包含中文参数造成乱码的解决方法

    asp.net URL中包含中文参数造成乱码的解决方法 更新时间:2010年03月08日 21:44:27   作者: 中文乱码一直以来是WEB开发中比较常见的问题之一,对于初学者来说,各种各样的编码 ...

  4. java url传参中文乱码问题_java中url传中文参数出现乱码

    缘由:java Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流(形成中文乱码).服务器 方法一:编码 咱们须要把request. ...

  5. jsp页面之间传中文参数显示乱码问题的解决

    jsp页面之间传中文参数显示乱码问题的解决 参考文章: (1)jsp页面之间传中文参数显示乱码问题的解决 (2)https://www.cnblogs.com/sllzhj/p/9673628.htm ...

  6. Ajax请求传递中文参数

    Ajax请求传递中文参数,java后台获取中文参数并解码的办法.自己记录下,备忘. 前端: $.ajax({             method: "POST",//encode ...

  7. IE浏览器url带中文参数导致乱码问题(chrome下正常)

    问题: E浏览器下url带中文请求参数,服务器端使用new String(param.getBytes("iso-8859-1"), "utf-8")后仍然会乱 ...

  8. 使用mybatis plus时传入中文时出现乱码

    1.前端上送拼接条件没问题 2.条件拼接完之后name字段出现乱码 Time:2 ms - ID:com.atguigu.eduService.mapper.EduTeacherMapper.sele ...

  9. tomcat java 参数乱码_【java】怎样解决tomcat中get提交中文参数为乱码的问题

    详解: http://www.360doc.com/content/10/0815/14/2736180_46209475.shtml 老是碰到中文问题,再解决一小点. 这次碰到的问题是,浏览器把ur ...

最新文章

  1. java十个整数相反顺序_编写程序,对输入的一个整数,按相反顺序输出该数。例如,输入为 3578, 输出为 8753。...
  2. iSCSI软件套件 介绍
  3. 论文:Insights on Transfer Optimization: Because Experience is the Best Teacher(1)文章结构以及以及自己的感觉
  4. asp.net导出到Excel的最佳选择
  5. Java同步机制之Monitor监视器与syncrhoized实现原理
  6. Linux修改挂载目录名称
  7. 双亲委托类加载机制_图解JVM类加载机制和双亲委派模型
  8. linux 查看端口是否被占用 解决端口占用问题 address already in use
  9. primitive types
  10. python pyquery 解析html数据
  11. 20200128每日一句
  12. 2020年百度之星程序设计大赛-初赛一(Drink、GPA、Dec)
  13. 720s ideapad 黑苹果_Hackintosh 黑苹果长期维护机型 EFI 及安装教程整理
  14. SDRAM 控制器(五)——数据读模块
  15. js 浏览器下载显示进度
  16. 第十二届“中国软件杯”大赛:A10-基于机器学习的分布式系统故障诊断系统——baseline(二)
  17. 一台游戏服务器支持多少人,网络游戏一个服务器可以容纳多少人同时在线?
  18. 爬虫搜索并下载网易云歌曲
  19. LeetCode刷题笔记汇总
  20. GC9A01-TFT屏幕驱动(整理有stm32/51单片机/arduino等驱动代码)

热门文章

  1. 前端学习(590):调试javascript的流程
  2. spring学习(52):工厂方法创建bean对象
  3. 是选择Keras还是PyTorch开始你的深度学习之旅呢?
  4. 机器学习算法总结--K近邻
  5. 关于Android回调的理解
  6. 怎么把整个网站的代码中的一个词去掉_【杭州南牛网络】网站优化的最新优化方法...
  7. Thinkphp 配置不用输入index.php
  8. 学习10:Python重要知识
  9. 前端测试框架 jasmine 的使用
  10. HDOJ 2037 今年暑假不AC 【贪心】