我有微信的调试官方账号。我在http://admin.wechat.com/debug/sandbox提供的字段中输入了我的公开网址和令牌,并尝试使用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格式
接收我错过了什么或者我忽略了什么?
答案 0 :(得分:1)
您是否可以确认已将网址和令牌提交到admin.wechat.com并且网址和令牌已被接受?
另请注意,您获取XML并使用XML响应json响应。
您有没看过:http://youtu.be/kB20Zf51QWU 然后这个 http://youtu.be/_2FSzD2B2F0
这是您在google&#34; wechat guide to message api&#34;
时可以找到XML的文档。因此,如果您在admin.wechat.com上提交应用时仍未收到成功消息,则可以在此处将测试网址发送给我。要查找此URL,请检查您的访问日志,以确切了解微信呼叫的URL。然后在这里发布。请注意,当您点击URL时,我们只能看到&#34; echostr&#34;打印在屏幕上(在浏览器中查看源代码时)。没有XML没有HTML只是echostr。
同时确保在&#34; echostr&#34;之后或之前没有空格或换行符。当您查看源时,它应该只是一行,这是echostr GET参数的值。
XML响应仅在您实际开始响应来自用户的消息时才会出现。目前微信只是确认您的安全性是否正确设置。
另请注意,如果您的服务器是负载平衡的,则必须跳过签名验证并在echostr GET参数通过时构建您自己的验证,并且只回显&#34; echostr&#34; param to screen。