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. STM32.ADC

    ADC实验 原理图: 1.ADC配置函数 /* enable adc1 and config adc1 to dma mode */ ADC1_Init(); /** * @brief ADC1初始化 ...

  2. CodeForces 450B Jzzhu and Sequences(矩阵快速幂)题解

    思路: 之前那篇完全没想清楚,给删了,下午一上班突然想明白了. 讲一下这道题的大概思路,应该就明白矩阵快速幂是怎么回事了. 我们首先可以推导出 学过矩阵的都应该看得懂,我们把它简写成T*A(n-1)= ...

  3. 【安装】ES的安装过程

    1.安装ES 首先我们需要去官网下载安装包  官方下载地址 下载后不需要编译,直接解压 解压后结构是这样的(2.5以上版本会有plugins目录,没有的需要手动创建) 方式一: 创建一个es用户(因为 ...

  4. linux 查看数据库和表

    mysql -h localhost -u 用戶名 -p密碼                //連接數據庫use desk_show;                                 ...

  5. 解决QML Window 增加radius效果

    做开发时,突然遇到 一个需要模态展示的对话框,做出来后,发现还要radius属性,增加时发现,Window控件不支持这个属性.如果是以前,原本就打算放弃了,但想一下,这种应该是支持的,既然接口上没有, ...

  6. rxjava rxandroid使用遇到的坑

    今天在解决一个界面加载本地数据库数据的时候,使用rxjava在指定io线程操作是遇到一个问题,即使指定了在io线程操作,可是界面还是卡顿,最后通过打印线程Thread.currentThread(). ...

  7. Android之网络图片加载的5种基本方式

    学了这么久,最近有空把自己用到过的网络加载图片的方式总结了出来,与大家共享,希望对你们有帮助. 此博客包含Android 5种基本的加载网络图片方式,包括普通加载HttpURLConnection.H ...

  8. Linux Mint 18.1安装nvidia驱动

    硬件环境:Dell Inspiron 7557笔记本(i7,8G,GTX960M) 软件环境:Linux Mint 18.1(基于Ubuntu 16.04) 问题描述: Linux Mint 18.1 ...

  9. 唯一索引 && 主键索引

    唯一索引唯一索引不允许两行具有相同的索引值. 如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存. 当新数据将使表中的键值重复时,数据库也拒绝接受此数据.例如,如果在 ...

  10. restframework api(基础3CBV)

    一 CBV源码流程 urls.py from django.conf.urls import url from django.contrib import admin from app01 impor ...