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. 在Github上搭建博客

    貌似还是这个链接最靠谱呀 http://my.oschina.net/nark/blog/116299   如何利用github建立个人博客:之一 在线编辑器http://markable.in/ed ...

  2. 菜单项onCreateOptionsMenu()和onOptionsItemSelected()的使用

    Java源文件 package com.example.macname.myapplication; import android.support.v7.app.AppCompatActivity; ...

  3. h.264_javascript_资料

    1. 用ffmpeg制作推流工具,实现推流系统声音和桌面到rtmp服务器-CSDN论坛-CSDN.NET-中国最大的IT技术社区.html http://bbs.csdn.net/topics/392 ...

  4. JQuery中width和JS中JS中关于clientWidth offsetWidth scrollWidth 等的含义

    JQuery中: width()方法用于获得元素宽度: innerWidth()方法用于获得包括内边界(padding)的元素宽度: outerWidth()方法用于获得包括内边界(padding)和 ...

  5. 3个方法实现JavaScript判断移动端及pc端访问不同的网站

    3个方法比较简单,分别在页面头部加入如下js代码: 对于简单地直接从www.maslinkcom跳转到m.maslink.com,此方法仅从首页而言: <script>(function ...

  6. Model/ModelMap 和 ModelAndView 的区别使用

    Model/ModelMap 和 ModelAndView 的区别使用 Model/ModelMap controller: package springmvc.controller; import ...

  7. 使用Zend studio+WAMP来调试Wordpress后台的PHP程序的一些非常关键的信息(原创)

    一.Zend studio代码格式化快捷键:选中代码,Ctrl+Shift+F( 注意,在英文输入发状态下使用!) .Zend studio实用快捷键 :http://www.zendstudio.n ...

  8. 由 '' in 'abc' return True 引发的思考----Python 成员测试操作

    最近遇到判断字典中是否存在空字符串‘’,这个很好判断,直接用:‘’ in ['a','b','c'],就可以直接判断出来:但是当我对字符串使用 “in” 方法进行判断的时候,发现:‘’ in ‘abc ...

  9. linux下运行jar

    方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二: java -jar XXX.jar ...

  10. UVALive-3645 Objective: Berlin (最大流:时序模型)

    题目大意:有n个城市,m条航班.已知每条航班的起点和终点,还有每条航班的载客量.出发时间.到达时间.并且要求在任何一个城市(起点.终点除外)都至少要有30分钟的中转时间,求起点到终点的最大客流量. 题 ...