zoukankan      html  css  js  c++  java
  • 企业微信接口问题

    背景:

    有两个微信企业号,一个是生产的微信企业号(未升级成企业微信),一个是测试企业号(已经升级到企业微信)

    在调用生产环境下的微信企业号的推送消息的接口时遇到以下问题:

    {"errcode":40033,"errmsg":"invalid charset. please check your request, if include \\uxxxx will create fail!"}

    根据上述,我们可以得知是由于含有特殊字符  \uxxxx

    但是在测试环境中的企业号却可以发送同样的字符。

    同样调用一模一样的代码去推送消息,如下:

    public static string SendMsgTest(string user, string msg)
        {
            try
            {
                var item = new { touser = user, toparty = "", totag = "", msgtype = "text", agentid = 0, text = new { content = msg }, safe = "0" };
                var body = DataToJson(item);
                WX_Api api = new  WX_Api(false);
                string url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + GetWeiQyToKenTest();
                return api.InfoPost(url, body);
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }

    好吧,那就找推送日志:

    {"touser":"C02","toparty":"","totag":"","msgtype":"text","agentid":0,"text":{"content":"测试消息,来自Perwen的补货订单审核确认:[单据号:RP1706301118_50]   http://xxxx.com.cn/w/ReplenishmentOrder/Checking.aspx?code=RP1706301118_50u0026id=106u0026t=999u0026a=2222u0026v=ooooo"},"safe":"0"}
    
    
    {"touser":"C02","toparty":"","totag":"","msgtype":"text","agentid":0,"text":{"content":"测试消息,来自Perwen的补货订单审核确认:[单据号:RP1706301118_50]   http://xxxx.com.cn/w/ReplenishmentOrder/Checking.aspx?code=RP1706301118_50u0026id=106u0026t=999u0026a=2222u0026v=ooooo"},"safe":"0"}

    于是就是懵了。。。。

    好吧,既然明面上不知道什么原因。但是有40033错误提示,那么就排除收干扰的因素。在生产的企业号替换掉含有特殊字符  \uxxxx  的。然后就可以了。。。。。。。。。。。

     public static string SendMsg(string user,string msg)
        {
            try
            {          
                var item = new { touser = user, toparty = "", totag = "", msgtype = "text", agentid = Agentid, text = new { content = msg }, safe = "0" };
                var body = DataToJson(item);
                string Strbody = body;
                JavaScriptSerializer js = new JavaScriptSerializer();
                body = js.Serialize(Strbody).Replace("\u0026", "&");
                body = body.Replace("\", "");
                body = body.TrimStart('"').TrimEnd('"');
                WXApi api = new WXApi(false);
                string url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + Access_Token.Access_Token;
                WriteLog("url---" + url);
                WriteLog("  body---" + body);
                return api.InfoPost(url, body);
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }

    结论:个人猜测是企业号跟企业微信的机制有一点点不一样。(PS:园友如有真相,还望告知)

  • 相关阅读:
    asp.net core文件上传与下载
    asp.net Core1.1版本生成超链接/a链接标签的方式
    CentOS 7.2 64位上装mysql
    CentOS7 yum 安装 Nginx最新版本
    Mysql Mariadb 密码问题
    关闭selinux
    OTRS
    CentOS查看一共安装了多少软件包,是那些软件包
    CentOS删除安装的程序
    centos7 上安装mysql5.7后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Yes 或者No)
  • 原文地址:https://www.cnblogs.com/panjinzhao/p/7130631.html
Copyright © 2011-2022 走看看