精华内容
下载资源
问答
  • C#模拟微信发送post请求
  • 接收微信公众号post数据中文乱码

    千次阅读 2015-01-22 14:12:42
    接收微信公众号post数据中文乱码     弄服务器的经常会遇见乱码问题,小白今天也遇到了,在接收微信公众号post过来的数据的时候,中文怎么弄都是乱码,让我很是费解。...读取微信post过来的...

    接收微信公众号post数据中文乱码

     

     

    弄服务器的经常会遇见乱码问题,小白今天也遇到了,在接收微信公众号post过来的数据的时候,中文怎么弄都是乱码,让我很是费解。

     

     

    最开始我用最原始的方式处理,乱码:

     

     

     

    // 1.获取流
    		InputStream in = request.getInputStream();
    
    		// 2.读取微信post过来的xml数据
    		int length = 0;
    		byte[] buf = new byte[1024];
    		StringBuilder sb = new StringBuilder();
    		while ((length = in.read(buf)) != -1) {
    			sb.append(new String(buf, 0, length));
    		}

     

     

     

    然后我 sb.toString()重新封装字符串并指定字符编码utf8,变成了另一种乱码。

     

    然后发现request有设置编码的方法,response也有,百度,查到这样的结果:

     

    如果不指定,默认为iso8859-1,自然是和utf8矛盾了,乱码也就自然而然了,值得注意的是,在request.setCharacterEncoding("utf-8");

    之前是不能获取参数值的,而且,这种方式只对post有效,get的数据无效。

     

     

    展开全文
  • 主要为大家详细介绍了Java微信公众平台开发第二步,微信服务器post消息体的接收,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 微信POST调试工具

    2014-08-15 16:22:24
    微信POST调试工具 微信自带的那种不太方便,这个蛮不错的,你可以试试看。
  • 微信POST登录例子
  • 微信开发 POST接收不到数据

    千次阅读 2014-07-18 09:59:55
    微信公众平台上自定义菜单的事件推送,文档上说会POST这些个数据 xml> ToUserName>ToUserName> FromUserName>FromUserName> CreateTime>123456789CreateTime> MsgType>MsgType> Event>Event> EventKey>EventKey> ...


    微信公众平台上自定义菜单的事件推送,文档上说会POST这些个数据

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[FromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[EVENT]]></Event>
    <EventKey><![CDATA[EVENTKEY]]></EventKey>
    </xml>
    

    但是我把log打出来看,POST里什么数据都没有

    其实微信把数据 全部放在request中,而不是通过POST的键值对对可以获取的。

    如python django中     print request.read() 得到的就是微信发回来的数据


    展开全文
  • 微信小程序开发post方法与get方法的封装 第一步:在utils文件夹下创建httpUtil.js文件 第二步:创建函数httpPost方法代码如下: function Post(url, data, cb, isShow, showNetError, that, showLoading) { if ...
  • 在上一篇的文章我们详细讲述了如何将我们的应用服务器和微信腾讯服务器之间的对接操作,最后接入成功,不知道你有没有发现在上一篇的【controller】我定义了一个get方法和一个post方法,但是在使用过程我们就...

    在上一篇的文章中我们详细讲述了如何将我们的应用服务器和微信腾讯服务器之间的对接操作,最后接入成功,不知道你有没有发现在上一篇的【controller】中我定义了一个get方法和一个post方法,但是在使用过程中我们就用了get方法,这里我们就来说说我们预留的post的方法的使用!

    当我们在完成了服务器验证之后,此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等!通过这句话我们能知道后面所有的微信服务器和我们应用服务器之间的沟通都是通过post消息体来完成的,那么我们这里将讲述如何接受微信post的消息体!

    (一)消息类型和消息格式

    上面有说道我们所有的和微信服务器之间进行沟通基本都是通过post消息体完成的,首先我们了解下消息体的类型,大致类型有两种:

    • 普通消息类型:文本消息、图片消息、语音消息、视频消息、小视频消息、地理位置消息、链接消息

    • 事件消息类型:关注/取消关注事件、扫描带参数二维码事件、上报地理位置事件、自定义菜单事件、点击菜单拉取消息时的事件推送、点击菜单跳转链接时的事件推送

    消息类型:微信服务端推送的所有消息体的类型格式都是xml格式;

    (二)消息重试机制

    微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试,但是这里后期可以使用【客服消息接口】去完成消息再次推送。

    (三)消息接收处理

    在前面我们有说道微信的消息体是采用xml格式,那么我在这里写了一个MessageUtil去做消息格式的处理,大致代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    package  com.cuiyongzhi.wechat.util;
    import  java.io.InputStream;
    import  java.io.Writer;
    import  java.util.HashMap;
    import  java.util.List;
    import  java.util.Map;
     
    import  javax.servlet.http.HttpServletRequest;
     
    import  org.dom4j.Document;
    import  org.dom4j.Element;
    import  org.dom4j.io.SAXReader;
     
    import  com.thoughtworks.xstream.XStream;
    import  com.thoughtworks.xstream.core.util.QuickWriter;
    import  com.thoughtworks.xstream.io.HierarchicalStreamWriter;
    import  com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
    import  com.thoughtworks.xstream.io.xml.XppDriver;
       
    /**
      * ClassName: MessageUtil
      * @Description: 消息工具类
      * @author dapengniao
      * @date 2016年3月7日 上午10:05:04
      */
    public  class  MessageUtil {  
       
         /** 
          * 返回消息类型:文本 
          */  
         public  static  final  String RESP_MESSAGE_TYPE_TEXT =  "text" ;  
       
         /** 
          * 返回消息类型:音乐 
          */  
         public  static  final  String RESP_MESSAGE_TYPE_MUSIC =  "music" ;  
       
         /** 
          * 返回消息类型:图文 
          */  
         public  static  final  String RESP_MESSAGE_TYPE_NEWS =  "news" ;  
       
         /** 
          * 请求消息类型:文本 
          */  
         public  static  final  String REQ_MESSAGE_TYPE_TEXT =  "text" ;  
       
         /** 
          * 请求消息类型:图片 
          */  
         public  static  final  String REQ_MESSAGE_TYPE_IMAGE =  "image" ;  
       
         /** 
          * 请求消息类型:链接 
          */  
         public  static  final  String REQ_MESSAGE_TYPE_LINK =  "link" ;  
       
         /** 
          * 请求消息类型:地理位置 
          */  
         public  static  final  String REQ_MESSAGE_TYPE_LOCATION =  "location" ;  
       
         /** 
          * 请求消息类型:音频 
          */  
         public  static  final  String REQ_MESSAGE_TYPE_VOICE =  "voice" ;  
       
         /** 
          * 请求消息类型:推送 
          */  
         public  static  final  String REQ_MESSAGE_TYPE_EVENT =  "event" ;  
       
         /** 
          * 事件类型:subscribe(订阅) 
          */  
         public  static  final  String EVENT_TYPE_SUBSCRIBE =  "subscribe" ;  
       
         /** 
          * 事件类型:unsubscribe(取消订阅) 
          */  
         public  static  final  String EVENT_TYPE_UNSUBSCRIBE =  "unsubscribe" ;  
       
         /** 
          * 事件类型:CLICK(自定义菜单点击事件) 
          */  
         public  static  final  String EVENT_TYPE_CLICK =  "CLICK" ;  
       
         /**
          * @Description: 解析微信发来的请求(XML) 
          * @param @param request
          * @param @return
          * @param @throws Exception   
          * @author dapengniao
          * @date 2016年3月7日 上午10:04:02
          */
         @SuppressWarnings ( "unchecked" )
         public  static  Map<String, String> parseXml(HttpServletRequest request)  throws  Exception {  
             // 将解析结果存储在HashMap中   
             Map<String, String> map =  new  HashMap<String, String>();  
       
             // 从request中取得输入流   
             InputStream inputStream = request.getInputStream();  
             // 读取输入流   
             SAXReader reader =  new  SAXReader();  
             Document document = reader.read(inputStream);  
             // 得到xml根元素   
             Element root = document.getRootElement();  
             // 得到根元素的所有子节点   
             List<Element> elementList = root.elements();  
       
             // 遍历所有子节点   
             for  (Element e : elementList)  
                 map.put(e.getName(), e.getText());  
       
             // 释放资源   
             inputStream.close();  
             inputStream =  null ;  
       
             return  map;  
         }  
       
         @SuppressWarnings ( "unused" )
         private  static  XStream xstream =  new  XStream( new  XppDriver() {  
             public  HierarchicalStreamWriter createWriter(Writer out) {  
                 return  new  PrettyPrintWriter(out) {  
                     // 对所有xml节点的转换都增加CDATA标记   
                     boolean  cdata =  true ;  
                     @SuppressWarnings ( "rawtypes" )
                     public  void  startNode(String name, Class clazz) {  
                         super .startNode(name, clazz);  
                     }  
       
                     protected  void  writeText(QuickWriter writer, String text) {  
                         if  (cdata) {  
                             writer.write( "<![CDATA[" );  
                             writer.write(text);  
                             writer.write( "]]>" );  
                         else  {  
                             writer.write(text);  
                         }  
                     }  
                 };  
             }  
         });  
    }

    在这个方法体里需要用到部分依赖,需要在pom文件加入如下部分:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!-- xml -->
    < dependency >
         < groupId >org.apache.directory.studio</ groupId >
         < artifactId >org.dom4j.dom4j</ artifactId >
         < version >1.6.1</ version >
    </ dependency >
     
    < dependency >
         < groupId >com.thoughtworks.xstream</ groupId >
         < artifactId >xstream</ artifactId >
         < version >1.4.8</ version >
    </ dependency >

    然后将我们的WechatSecurity Controller中的post方法修改为如下,用于做消息的接收和处理:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @RequestMapping (value =  "security" , method = RequestMethod.POST)
         // post方法用于接收微信服务端消息
         public  void  DoPost(HttpServletRequest request,HttpServletResponse response) {
             System.out.println( "这是post方法!" );
             try {
             Map<String, String> map=MessageUtil.parseXml(request);
             System.out.println( "=============================" +map.get( "Content" ));
             } catch (Exception e){
                 logger.error(e,e);
             }
         }

    因为前面我们已经开启了我们的开发者模式,那么当我们在这里将我们代码发布之后再公众号上发送消息,在们的后台就能看到我们的消息体进入并解析成功了,这里我输出的是微信的【原始ID】,截图大致如下:

    1.jpg在这里我只是做了消息体的接收和转换成Map,并没有对消息做出来,那么下一篇我们将讲述对消息的分类处理!感谢你的翻阅,如有疑问可以留言讨论!

    展开全文
  • 微信POST网页版协议
  • 微信小程序 POST请求的实例详解 在微信小程序里post请求和get情求,写法差不多,但是还是有一点点不同的,下面利用post请求做一个查询天气的微信小程序demo。 页面代码: <view> {{title}} <span xss=removed><...
  • 前两天在整合微信小程序前后端的过程,出现了中文 乱码。解决方法如下:前端的代码:wx.request({ url: '.........', data: { ....... }, header: { 'Content-Type': 'application/x-www-form-urlencoded;charset=...

    前两天在整合微信小程序前后端的过程中,出现了中文 乱码。解决方法如下:

    前端的代码:

    wx .request ({
    url : '.........' ,
    data : {
    .......
    },
    header : {
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
    },
    method : 'POST' ,
    success : function (res ) { //请求成功
    },
    )};

    当为post请求中含中文时,需要加入编码格式:如UTF-8

    在后端,接受请求后,需对请求参数进行解码,代码如下:

    public class StringUtil {
    
        public static String decode(String param){
            String result= null;
            try {
                result = new String(param.getBytes("utf-8"), "utf-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return result;
        }
    }


    展开全文
  • 微信小程序Post方法提交数据

    千次阅读 2019-01-19 11:51:57
    微信小程序Post方法提交数据 问题描述 微信小程序使用POST方法向Spring Boot 后端提交数据,但是后端无法得到期待的数据; 后端Controller方法使用@RequestBody注解DTO,前端需要传入JSON字符串参数,然后Spring MVC...
  • 在ios微信浏览器,jQuery.post方法访问本地地址没有返回,而且也不能做调试.原因:ios里面的post请求,要求完整的post的请求头和json响应头,所以不能直接post访问本地文件,但是get完全没问题的。解决方案:使用...
  • B图: A图: ...这个问题耗费了我们大量的时间去寻找原因,怀疑服务器,怀疑client都做了,最终通过抓包,分析出上面2个流程,B为...你懂的,也可能是CDN加速,然后QQ代理服务器反馈给client 805,这个是微信自己
  • 主要介绍了微信小程序 POST请求(网络请求)详解及实例代码的相关资料,需要的朋友可以参考下
  • 微信小程序封装post,get

    千次阅读 2018-07-18 09:58:17
    微信封装post请求 // post请求 function postrq(url,data) { return new Promise(function (resolve, reject) { wx.request({ url: 'https://xxxxxxxxxxxxx'+url, data: data, header: { ...
  • 微信小程序 POST请求不到数据

    千次阅读 2018-07-06 09:04:52
    微信小程序使用POST请求时需要改变一下 header请求头: header: { "Content-Type": "application/x-www-form-urlencoded" }, 想要获得更多资料的 请微信搜索公众号 【热血科技】,关注...
  • 微信小程序wx.request是发起的是HTTPS 请求,其method有两种方法:get和post。method为get时,header必须为:(默认header就是这个,这个可以)[javascript] view plain copyheader: { 'content-type': '...
  • 今天用java 调用 微信分账api 由于上传的数据是xml 格式, 用post请求发送 。在网上找的现成函数,微信服务器老是返回签名错误,但是我用postman 发送返回的数据没有问题,于是经过自己探索,写了个测试可用的post ...
  • 最近做微信开发,在微信中访问PHP页面,页面有个表单。测试发现偶尔会出现表单被自动提交两次的情况,导致流程出错。 问题原因 暂时未找到原因,不过怀疑跟微信本身的机制有关。 解决方法 用session,每次提交表单...
  • 跨域名访问get and post 方法,在微信企业公众号开发中用到的
  • Java HttpClient 如何伪装微信浏览器进行POST请求当我用HttpClient的post去请求外部微信支付跳转时得到一个返回值:{"code":"XXXXXXXXX,"message":"请使用微信打开页面"}当时通过思考我想到了两个办法: 把这个POST...
  • ![图片说明](https://img-ask.csdn.net/upload/201511/18/1447832541_323866.png) 请问下:post的数据格式 buffer是哪种呢???
  • 微信小程序之POST请求

    千次阅读 2016-11-17 17:45:35
    微信小程序里post请求和get情求,写法差不多,但是还是有一点点不同的,下面利用post请求做一个查询天气的微信小程序demo。页面代码: <view> {{title}} </view><span style="font-size:24px;"><!--index.wxml--> ...
  • 微信post方法的坑

    千次阅读 2018-05-14 21:21:21
    1.开发者模式下配好...2.要根据用户的消息给用户发送推送消息,&lt;ToUserName&gt;&lt;FromUserName&gt;两个标签里的值要把从请求里得到的ToUserName和FromUserName的值对调后赋给这两个标签。...
  • 微信小程序 post 请求404

    万次阅读 2018-07-31 09:17:06
    微信小程序 错误: 后台使用springmvc注解 wx.request请求,url正确,能够将数据传递到后台,后台能够正确处理返回值,但是小程序端却提示 post (请求的url) not found 404   原因: 请求函数没有加上@...
  • java开发微信小程序post请求与get请求

    千次阅读 2018-05-12 09:26:17
    问题:用post请求方式时,后端...那就入坑了.header头: 'Content-Type': 'application/json'用在get请求没问题.POST请求就不好使了.需要改成: "Content-Type": "application/x-www-form-url...
  • 微信公众号开发 POST请求错误

    千次阅读 2016-08-18 08:56:40
    接触微信公众号接口开发,在进行自行以菜单添加进行POST请求时 出错 无任何返回结果。 用的是curl的请求。最后差错时因为curl的原因 对比代码如下:错误版 无法放问POST 返回错误结果代码为60 对应错误是:无法使用...
  • 微信小程序 POST 传输列表

    千次阅读 2019-05-28 04:17:29
    最近在学习微信小程序,遇到了一些坑,有些问题我看官网或者其他博客,可能讲的不是那么易懂,所以自己找到解决方法后,写下来供大家参考,如有不对指出,还恳请大家指出~ 比如在实现购物车批量购买的时候,我们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,271
精华内容 36,908
关键字:

微信中的post