这段调用微信公众号客服接口的程序在Framework2.0环境中如何修改源码方可实现?

qq_37057775 2017-03-21 09:12:14
昨天查找的一段调用微信公众号客服接口的程序,其中构造Http对象在Framework2.0环境中不行,HttpRequest对象构造方法也不同,放在Framework2.0环境中如何修改源码方可实现?


Http h = new Http(); //在Fx2.0中需要另写构造对象的程序
HttpRequest req = new HttpRequest(); //Fx2.0的写法需要在构造函数中传参
req.setMethod('POST');
req.setHeader('Accept-Encoding','gzip,deflate');
req.setHeader('Content-Type','text/xml;charset=UTF-8');
req.setHeader('User-Agent','Jakarta Commons-HttpClient/3.1');

String sendMsg = '{ "touser":"ou-37t936RNZEcW0mI75RN2pdxkc", "msgtype":"text", "text": { "content":"测试客服消息" } }';

req.setBody(sendMsg);
req.setEndpoint('https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=bW3aubvd1GVgDZbrO6zv1WGVYIU0QlEhI1J5x_NpbiouxyBc8eufzQQHHyy8cMoZmuQknz-_iEgSB76CggVTgQ’);

String bodyRes = '';

try{
HttpResponse res = h.send(req);
bodyRes = res.getBody();
}
catch(System.CalloutException e) {
System.debug('Callout error: '+ e);
}

);



这段代码比较适用后台发送Json数据到客服接口,很适合处理一些后台程序之后的调用客服接口。
...全文
238 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37057775 2017-03-23
  • 打赏
  • 举报
回复
引用 12 楼 xdashewan 的回复:
[quote=引用 11 楼 qq_37057775 的回复:] 改成这样还是一样的,说到拼接字符串,应该用StringBuilder吧
错误的是红字部分的拼接,你不会C#拼接字符串?[/quote] 拼接字符串的问题其实会解决,就当贵人多忘事吧。
qq_37057775 2017-03-23
  • 打赏
  • 举报
回复
使用StringBuilder拼接时,不能用Server.HtmlEncode 对Json数据转码,但是怎么在传送Json字符串时处理多个引号?
xdashewan 2017-03-23
  • 打赏
  • 举报
回复
引用 11 楼 qq_37057775 的回复:
改成这样还是一样的,说到拼接字符串,应该用StringBuilder吧
错误的是红字部分的拼接,你不会C#拼接字符串?
qq_37057775 2017-03-23
  • 打赏
  • 举报
回复
引用 10 楼 xdashewan 的回复:
[quote=引用 8 楼 qq_37057775 的回复:] 这里再问明一点,用Method="POST"方式,Json数据传值,在这里: String sendmsg = "{ "touser":openid.toString(), "msgtype":"text", "text": { "content":"客服消息" }}';
"{ "touser":openid.toString(), "msgtype":"text", "text": { "content":"客服消息" }}'; 明显这里拼接字符串有问题,重新调整下[/quote] ' { "touser":openid.toString(), "msgtype":"text", "text": { "content":"客服消息" }} ' ; 改成这样还是一样的,说到拼接字符串,应该用StringBuilder吧
xdashewan 2017-03-23
  • 打赏
  • 举报
回复
引用 8 楼 qq_37057775 的回复:
这里再问明一点,用Method="POST"方式,Json数据传值,在这里: String sendmsg = "{ "touser":openid.toString(), "msgtype":"text", "text": { "content":"客服消息" }}';
"{ "touser":openid.toString(), "msgtype":"text", "text": { "content":"客服消息" }}'; 明显这里拼接字符串有问题,重新调整下
qq_37057775 2017-03-23
  • 打赏
  • 举报
回复
byte[] bytes = System.Text.Encoding.GetEncoding(encoding).GetBytes(requestXML); @以专业开发人员为伍 网上看到这样传输Json数据字符串是否合适?
qq_37057775 2017-03-23
  • 打赏
  • 举报
回复
引用 7 楼 xdashewan 的回复:
[quote=引用 6 楼 qq_37057775 的回复:] 以下这段代码如何设置发送Json数据到客服接口?具体调用HttpWebRequest 什么方法,能讲一下吗 无论如何,先言谢意!
用post方式Method = "POST";,不明白上网查,这类例子多的不能再多了[/quote] 这里再问明一点,用Method="POST"方式,Json数据传值,在这里: String sendmsg = "{ "touser":openid.toString(), "msgtype":"text", "text": { "content":"客服消息" }}'; 是这样传值吗?在系统提示错误单引号里的字符串太多! @以专业开发人员为伍 在网上搜过还是存有疑惑!继续学习补足!
qq_37057775 2017-03-21
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
HttpRequest 是通过 WebRequest.Create 方法创建的 --> HttpWebRequest 是通过 WebRequest.Create 方法创建的 可能你把 HttpWebRequst 的名字记错了。
Http h = new Http(); //在Fx2.0中需要另写构造对象的程序 HttpRequest req = new HttpRequest(); //Fx2.0的写法需要在构造函数中传参 还有Http h=new Http();应该怎么写?使用HttpWebRequest 的写法就需要Http的对象了是吧?
xdashewan 2017-03-21
  • 打赏
  • 举报
回复
用HttpWebRequest
  • 打赏
  • 举报
回复
HttpRequest 是通过 WebRequest.Create 方法创建的 --> HttpWebRequest 是通过 WebRequest.Create 方法创建的 可能你把 HttpWebRequst 的名字记错了。
  • 打赏
  • 举报
回复
HttpRequest 是通过 WebRequest.Create 方法创建的。你可以随便搜一下例子,全都是这样的。
xdashewan 2017-03-21
  • 打赏
  • 举报
回复
引用 6 楼 qq_37057775 的回复:
以下这段代码如何设置发送Json数据到客服接口?具体调用HttpWebRequest 什么方法,能讲一下吗 无论如何,先言谢意!
用post方式Method = "POST";,不明白上网查,这类例子多的不能再多了
qq_37057775 2017-03-21
  • 打赏
  • 举报
回复
以下这段代码如何设置发送Json数据到客服接口?具体调用HttpWebRequest 什么方法,能讲一下吗?@以专业开发人员为伍

try
                            {
                                string responseUrl = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + Session["aToken"].ToString();
                                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(responseUrl);
                                request.Method = "GET";
                                request.ContentType = "text/xml;charset=UTF-8";
                                request.GetResponse();  //获取来自服务器的响应
                                request.Abort();
                            }
                            catch (Exception ex)
                            {
                                Response.Write(ex.Message);
                            }
无论如何,先言谢意!
qq_37057775 2017-03-21
  • 打赏
  • 举报
回复
我自己写了一下,其中的错误望@以专业开发人员为伍 指正!

try
                            {
                                string responseUrl = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + Session["aToken"].ToString();
                                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(responseUrl);
                                request.Method = "GET";
                                request.ContentType = "text/xml;charset=UTF-8";
                                request.GetResponse();  //获取来自服务器的响应
                                request.Abort();
                            }
                            catch (Exception ex)
                            {
                                Response.Write(ex.Message);
                            }
微信快速开发框架V2.0源码 用了一个多星期的时间,把微信快速开发框架进行了改进,之前1.0版本针对的是普通订阅号,V2.0版本将会对微信所有接口都进行支持。楼主开发的目的也是想让大家能够快速建立起微信公众平台(WXPP),据说现在开发个微信公众平台月薪可以达到10K,哈哈。 好久没被首推了,现在怎么申请首推啊? 此次更新的内容: 1、去除了Model类库,合并到WX.Framework类库 2、增加了对高级接口的支持 3、增加了API调用方式 4、支持获取AccessToken 5、增加了测试代码 6、增加群发功能,包括群发后时间的响应。 这次更新的内容较多,我会一一来演示给大家看的,目前还未支持上传和下载媒体文件,对于微信文档说的Post/Form方式不太了解,示例也用了CURL,这个更不了解了。 微信公众平台类型 如果您刚解除微信公众平台,可以参考【建立微信公众平台测试账号】,目前微信公众平台账号类型分为:订阅号,服务号,账号类型的不同,所支持的接口也不相同: image 之前1.0版本仅仅支持订阅号未认证的情况。1.0版本的使用可以参考:【体验微信公众平台快速开发框架】和【利用快速开发框架,快速搭建微信浏览博客园首页文章】 通过实现IMessageRole.MessageRole(MiddleMessage message)和IMessageHandler.HandlerRequestMessage(MiddleMessage message),自定义规则和返回数据。在此不再重复表述。 V2.0支持自定义菜单及高级接口 V2.0已经基本支持自定义菜单及高级接口,自定义菜单和高级接口采用API方式与微信服务器端交互。 IApiClient:Api接口类 DefaultApiClient:实现了IApiClient的Execute方法 ApiResponse:微信服务端返回的数据,这个是个抽象类,所有继承的Response在WX.Model.Responses命名空间内 ApiRequest:发送到微信服务器短的数据,也是个抽象类,所有与之相关的Request都在WX.Model.Requests命名空间内 ApiRequest与ApiResponse是一一对应的关系。 ApiAccessTokenManager:因为自定义菜单及高级接口都需要AccessToken,所以写了一个TokenManager,使用的是单例模式,如果您想使用此类,您必须在配置文件提供:wxappid和wxappsecret的值,也可以通过ApiAccessTokenManager.Instance.SetAppIdentity(appid, appsecret)初始设置。

62,248

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧