.net 微信接口(如何使用微信接口--做过的请进)
段传涛 博客专家认证 2013-08-01 11:56:26 想做一个程序通过微信发信息。
有人做过吗?是怎么实现的。
-------------------------------------------------------------------------------------------------------
我找的参考代码,有人知道实现不步骤吗?
<%@ WebHandler Language="C#" CodeBehind="MessageReceiveHandler.ashx.cs" Class="MessageReceiveHandler" %>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.UI.HtmlControls;
using System.IO;
using Tencent.WeiXin;
/// <summary>
/// MessageReceiveHandler 的摘要说明
/// </summary>
public class MessageReceiveHandler : IHttpHandler
{
private static readonly string Token = "Opzoon-ITservice";
public void ProcessRequest(HttpContext context)
{
if (context.Request.RequestType == "GET")
{
if (CheckSignature(context))
{
context.Response.Write(context.Request.QueryString["echostr"]);
}
return;
}
var messageBase=MessageBase.Parse(context.Request.InputStream, context.Request.ContentEncoding);
Tencent.WeiXin.TextReplyMessage text = new Tencent.WeiXin.TextReplyMessage();
text.Content = "我收到了";
switch (messageBase.Type)
{
case MessageType.Text:
text.Content += string.Format("文本消息“{0}”",((TextMessage)messageBase).Content);break;
case MessageType.Image:
text.Content += string.Format("图片消息“{0}”", ((ImageMessage)messageBase).PicUrl); break;
case MessageType.Link:
text.Content += string.Format("链接消息“{0}”", ((LinkMessage)messageBase).Url); break;
case MessageType.Location:
text.Content += string.Format("地图消息“X:{0}Y:{1}C{2}L{3}”", ((LocationMessage)messageBase).X,((LocationMessage)messageBase).Y,((LocationMessage)messageBase).Scale,((LocationMessage)messageBase).Label); break;
case MessageType.Event:
text.Content += string.Format("时间推送消息“{0}”", ((EventMessage)messageBase).EventType); break;
}
text.Init(messageBase);
text.Write(context.Response.Output);
//context.Response.Write(mess.ToString());
context.Response.ContentType = "text/xml";
context.Response.Flush();
}
protected virtual bool CheckSignature(HttpContext context)
{
List<string> list = new List<string>();
list.Add(context.Request.QueryString["timestamp"]);
list.Add(context.Request.QueryString["nonce"]);
list.Add(Token);
list = list.OrderBy(t => t).ToList();
var sha1 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(list[0] + list[1] + list[2], "SHA1");
var signature = context.Request.QueryString["signature"];
//var signature = "testtesttest";
return signature.Equals(sha1, StringComparison.OrdinalIgnoreCase);
}
public bool IsReusable
{
get
{
return false;
}
}
}