企业微信接口问题
背景:
有两个微信企业号,一个是生产的微信企业号(未升级成企业微信),一个是测试企业号(已经升级到企业微信)
在调用生产环境下的微信企业号的推送消息的接口时遇到以下问题:
{\"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_50\u0026id=106\u0026t=999\u0026a=2222\u0026v=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_50\u0026id=106\u0026t=999\u0026a=2222\u0026v=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:园友如有真相,还望告知)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」