1. /**
  2. * 向指定 URL 发送POST方法的请求
  3. *
  4. * @param url
  5. *            发送请求的 URL
  6. * @param param
  7. *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  8. * @return 所代表远程资源的响应结果
  9. */
  10. public static String sendPost(String url, String param) {
  11. PrintWriter out = null;
  12. BufferedReader in = null;
  13. String result = "";
  14. try {
  15. URL realUrl = new URL(url);
  16. // 打开和URL之间的连接
  17. URLConnection conn = realUrl.openConnection();
  18. //设置通用的请求属性
  19. conn.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0)");
  20. // 发送POST请求必须设置如下两行
  21. conn.setDoOutput(true);
  22. conn.setDoInput(true);
  23. // 获取URLConnection对象对应的输出流
  24. OutputStreamWriter outWriter = new OutputStreamWriter(conn.getOutputStream(), "utf-8");
  25. out = new PrintWriter(outWriter);
  26. // 发送请求参数
  27. out.print(param);
  28. // flush输出流的缓冲
  29. out.flush();
  30. // 定义BufferedReader输入流来读取URL的响应
  31. in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  32. String line;
  33. while ((line = in.readLine()) != null) {
  34. in = new BufferedReader(new InputStreamReader(conn.getInputStream()));result += line;
  35. }
  36. } catch (Exception e) {
  37. System.out.println("发送 POST 请求出现异常!"+e);
  38. e.printStackTrace();
  39. }
  40. //使用finally块来关闭输出流、输入流
  41. finally{
  42. try{
  43. if(out!=null){
  44. out.close();
  45. }
  46. if(in!=null){
  47. in.close();
  48. }
  49. }
  50. catch(IOException ex){
  51. ex.printStackTrace();
  52. }
  53. }
  54. return result;
  55. }
  1. /**
  2. * 普通文本消息,需用户在48h与公共帐号有互动
  3. * 微信公共账号发送给账号
  4. * @param content 文本内容
  5. * @param toUser(OPENID) 微信用户
  6. * @return
  7. */
  8. public static void sendTextMessageToUser(HttpServletRequest request,String content,String toUser){
  9. String json = "{\"touser\": \""+toUser+"\",\"msgtype\": \"text\", \"text\": {\"content\": \""+content+"\"}}";
  10. //获取access_token
  11. String accessToken = getAccessToken(request);
  12. //发送模版消息给指定用户
  13. String action = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+accessToken;
  14. System.out.println("json:"+json);
  15. try {
  16. String result = HttpJsonUtil.sendPost(action, json);
  17. System.out.println(result);
  18. } catch (Exception e) {
  19. e.printStackTrace();
  20. }
  21. }

我自己都不知道在这个地方倒下了多少次了:

关键代码:

// 获取URLConnection对象对应的输出流
OutputStreamWriter outWriter = new OutputStreamWriter(conn.getOutputStream(), "utf-8");
out = new PrintWriter(outWriter);

乱码时候的写法是:

in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

java微信 客服接口-发消息 中文乱码的更多相关文章

  1. [微信] 客服接口调用的时候返回 40003 Invalid OpenID

    首先确认收件人在24小时内主动向公众号发过消息.该消息的 FromUserId 即是客服消息的 touser 参数的 OpenId 2017-05-19 更新:可以使用UTF-8了 string ur ...

  2. Java微信公众平台开发(九)--关键字回复以及客服接口实现(该公众号暂时无法提供服务解决方案)

    转自:http://www.cuiyongzhi.com/post/47.html 我们在微信公众号的后台可以发现微信给我们制定了两种模式,一种是开发者模式(也就是我们一直在做的开发),还有一种模式是 ...

  3. [入门到吐槽系列] 微信小程序 敏感违规图片检测 mediaCheckAsync,客服接口 消息推送 的各种坑分享!

    前言: 最近需要做个用户上传图片,服务端校验图片问题的需求.需要使用小程序消息推送,异步接受腾讯的图片验证回调.实在太多坑了. 相信10分钟看完本文的朋友,可以非常顺利避坑. 前期准备: 首先需要一个 ...

  4. Force.com微信开发系列(六)客服接口

    当用户主动发消息给微信公众账号的时候(包括发送信息.点击自定义菜单click事件.订阅事件.扫描二维码事件.支付成功事件.用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前为48小时 ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明

    微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是 ...

  6. php 微信客服信息推送失败 微信重复推送客服消息 40001 45047

    /*** * 微信客服发送信息 * 微信客服信息推送失败 微信重复推送客服消息 40001 45047 * 递归提交到微信 直到提交成功 * @param $openid * @param int $ ...

  7. 微信公众号客服接口:out of response count limit 的原因

    调用客服消息接口返回如下:                                                                                       ...

  8. 微信小程序如何实现和微信客服通话?

    微信小程序如何实现和微信客服通话?

  9. 微信小程序自定义微信客服按钮

    微信小程序官方api中提到的微信客服,是一个固定的组件,图标样式固定,大小最多27px 很明显这个是不能满足我们各种奇葩需求的.下面提供一个野蛮的自定义方法. 比如做一个这样的按钮: 图标用自定义的, ...

随机推荐

  1. Cooperation.GTST团队第三周项目总结

    项目进展 这周我们仍然在学习使用博客园的相关接口,页面的一个基本模块已经搭建出来了,但是页面整体效果还没有完全做出来.另外,我们在使用其他的APP时留意到许多APP都使用上拉加载和下拉刷新的效果,所以 ...

  2. 【建项目】eclipse maven建立多模块工程

    在工作的时候,大多时候都是用Maven来管理项目,可是一般我们都知道怎么用maven管理工程,却不知道通过Maven自己来建立多模块工程.于是自己抽时间,在网上找些资料,做了起来. 建立简单的Mave ...

  3. Python学习札记(三十三) 面向对象编程 Object Oriented Program 4

    参考:继承和多态 NOTE 著名的开闭原则: 对扩展开放:允许新增Animal子类: 对修改封闭:不需要修改依赖Animal类型的Animal_func()等函数. 1.eg. #!/usr/bin/ ...

  4. 几个主流的Java连接池整理

    池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对 ...

  5. MySQL事务处理实现方法步骤

    需求说明: 案例背景:银行的转账过程中,发生意外是在所难免.为了避免意外而造成不必要的损失,使用事务处理的方式进行处理: A账户现有余额1000元,向余额为200的B账户进行转账500元.可能由于某原 ...

  6. android 蓝牙通信编程讲解

    以下是开发中的几个关键步骤: 1,首先开启蓝牙 2,搜索可用设备 3,创建蓝牙socket,获取输入输出流 4,读取和写入数据 5,断开连接关闭蓝牙 下面是一个demo 效果图: SearchDevi ...

  7. Java如何用一行代码初始化ArrayList

    参考链接: 1.Initialization of an ArrayList in one line 2.java怎么用一行代码初始化ArrayList

  8. PHP--------解决网址URL编码问题

    在PHP中有urlencode().urldecode().rawurlencode().rawurldecode()这些函数来解决网页URL编码解码问题. 理解urlencode: urlencod ...

  9. Java研发工程师知识点总结

    Java研发工程师知识点总结 最近一次更新2017年12月08日 大纲 一.Java基础(语言.集合框架.OOP.设计模式等) 二.Java高级(JavaEE.框架.服务器.工具等) 三.多线程和并发 ...

  10. db2时间函数

    获取当前日期: select current date from sysibm.sysdummy1; values current date; --获取当前时间 select current time ...