我在微信上有一个调试官方帐户。我已经在提供的http://admin.wechat.com/debug/sandbox字段中输入了公共URL和令牌,还尝试使用http://admin.wechat.com/debug/调试请求
我的ASP.Net [.Net4.5] Web API应用程序的POST方法如下所示:
public HttpResponseMessage PostMessage([FromBody]Strikemedia.Api.WeChat.TextMessage value)
{
if (value == null)
{
var richMediaMessage = new RichMediaMessage();
richMediaMessage.touser = value.FromuserName;
//Create Article
var item = new Article()
{
title = "Didn't receive anything back",
description = "Mind entering 'test'",
picurl = "URL",
url = "URL"
};
var articles = new List<Article>();
articles.Add(item);
richMediaMessage.articles = articles;
richMediaMessage.articleCount = articles.Count;
return Request.CreateResponse(HttpStatusCode.OK, richMediaMessage, "application/json");
}
var exploded = value.Content.Split(' ')[0];
var richMedia = new RichMediaMessage();
richMedia.touser = value.FromuserName;
//Create Article
var article = new Article() {
title = response.KeywordDescription,
description = response.Response,
picurl = "URL",
url = "URL"
};
var _articles = new List<Article>();
_articles.Add(article);
richMedia.articles = _articles;
richMedia.articleCount = _articles.Count;
//Return response
var resp = Request.CreateResponse(HttpStatusCode.OK, richMedia, "application/json");
//resp.RequestMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
return resp;
}
它需要以JSON格式的RichMessageType进行响应,并以XML格式接收
我是否缺少某些东西或忽略了某些东西?
最佳答案
您可以确认已将URL和令牌提交到admin.wechat.com中,并且已接受URL和令牌吗?
还要注意,您得到XML,并且以XML响应,而没有json响应。
您是否看过:http://youtu.be/kB20Zf51QWU
然后这个
http://youtu.be/_2FSzD2B2F0
这是XML的文档,可在您通过Google搜索“消息API的微信指南”时找到
因此,如果您在admin.wechat.com上提交应用程序时仍未收到成功消息,则可以在此处向我发送测试URL。要找到此网址,请检查您的访问日志,以确切了解我们正在调用的网址。然后在这里发布。请注意,当您按微信访问URL时,您仅应在屏幕上看到“回显”字样(在浏览器中查看源代码时)。没有XML没有HTML只是echostr。
还要确保在“ echostr”之后或之前没有空格或换行符。当您查看源代码时,它只能是echostr GET参数值的一行。
仅当您实际上开始响应来自用户的消息时,才会出现XML响应。目前,微信只是在确认您的安全性设置是否正确。
还要注意,如果您的服务器是负载平衡的,那么当通过echostr GET参数并且仅将“ echostr”参数回显到屏幕时,您将不得不跳过签名验证并建立您自己的验证。