您的位置:首页 > 移动开发 > 微信开发

.Net 微信公众帐号实现发送消息

2013-11-20 14:18 681 查看
1.接收请求,请求页面采用Post传值的方式 ,并接收读取页面传递的XML,官方XML格式:如下
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>

2.Net 页面接收请求代码如下: HandleMsg 处理接收的XML,并把相关信息存放到自己创建的实体中_RequestMsgModel。
if (Request.HttpMethod.ToLower().Equals("post".ToLower())) {
//--获取传入的内容
Stream contextStream = HttpContext.Current.Request.InputStream;
byte[] b = new byte[contextStream.Length];
contextStream.Read(b, 0, (int)contextStream.Length);
//--转换成字符串
string contextStr = System.Text.Encoding.UTF8.GetString(b);
if (!string.IsNullOrEmpty(contextStr)) {
//--操作XML
new WeChatHandle().HandleMsg(contextStr);
}
}

/// <summary>
/// 获取请求信息的实体,并调用发送信息的方法
/// </summary>
/// <param name="context"></param>
public void HandleMsg(string context) {
//--加载Xml
XmlDocument doc = new XmlDocument();
doc.LoadXml(context);
XmlElement rootElement = doc.DocumentElement;
//--获取xml接点的值
_RequestMsgModel = new RequestMsgModel();
_RequestMsgModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
_RequestMsgModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
_RequestMsgModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;
_RequestMsgModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText;
switch (_RequestMsgModel.MsgType.ToLower()) {
case "text":
_RequestMsgModel.Content = rootElement.SelectSingleNode("Content").InnerText;
break;
case "image": //图片
_RequestMsgModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
break;
case "location": //位置
break;
case "link": //链接
break;
case "event": //事件推送
break;
default:
break;
}
}

3.处理发送XML,_RequestMsgModel 存放需要发送的相关信息。
private void ResponseMsg() {
try {
string resxml = "";
switch (_RequestMsgModel.MsgType) {
case "text":
//在这里执行一系列操作,从而实现自动回复内容.
resxml = SendText(resxml, _RequestMsgModel);
break;
case "image":
break;
}
System.Web.HttpContext.Current.Response.Write(resxml);

} catch (Exception ex) {

}
}
/// <summary>
/// 发送文本
/// </summary>
/// <param name="resxml"></param>
/// <returns></returns>
private string SendText(string resxml, RequestMsgModel __RequestMsgModel) {
string responseXml = " <xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>"
+ "<MsgType><![CDATA[{3}]]></MsgType><Content><![CDATA[{4}]]></Content><MsgId>{5}</MsgId></xml>";
resxml = string.Format(responseXml, __RequestMsgModel.FromUserName, __RequestMsgModel.ToUserName, DateTime.Now.ToLongTimeString()
, __RequestMsgModel.MsgType, __RequestMsgModel.Content, Int64.Parse("1000000"));
return resxml;
}

4.RequestMsgModel XML接收、发送的相关信息实体
/// <summary>
/// RequestMsgModel 接收信息的实体
/// </summary>
public class RequestMsgModel {
private string toUserName = "";
/// <summary>
/// 消息接收方微信号,一般为公众平台账号微信号
/// </summary>
public string ToUserName {
get { return toUserName; }
set { toUserName = value; }
}

private string fromUserName = "";
/// <summary>
/// 消息发送方微信号
/// </summary>
public string FromUserName {
get { return fromUserName; }
set { fromUserName = value; }
}

private string createTime = "";
/// <summary>
/// 创建时间
/// </summary>
public string CreateTime {
get { return createTime; }
set { createTime = value; }
}
private string msgType = "";
/// <summary>
/// 信息类型 地理位置:location,文本消息:text,消息类型:image
/// </summary>
public string MsgType {
get { return msgType; }
set { msgType = value; }
}
private string content = "";
/// <summary>
/// 信息内容
/// </summary>
public string Content {
get { return content; }
set { content = value; }
}
private string location_X = "";
/// <summary>
/// 地理位置纬度
/// </summary>
public string Location_X {
get { return location_X; }
set { location_X = value; }
}
private string location_Y = "";
/// <summary>
/// 地理位置经度
/// </summary>
public string Location_Y {
get { return location_Y; }
set { location_Y = value; }
}
private string scale = "";
/// <summary>
/// 地图缩放大小
/// </summary>
public string Scale {
get { return scale; }
set { scale = value; }
}
private string label = "";
/// <summary>
/// 地理位置信息
/// </summary>
public string Label {
get { return label; }
set { label = value; }
}
private string picUrl = "";
/// <summary>
/// 图片链接,开发者可以用HTTP GET获取
/// </summary>
public string PicUrl {
get { return picUrl; }
set { picUrl = value; }
}
/// <summary>
/// 链接
/// </summary>
private string title;

public string Title {
get { return title; }
set { title = value; }
}
/// <summary>
/// 链接
/// </summary>
private string description;

public string Description {
get { return description; }
set { description = value; }
}
/// <summary>
/// 链接
/// </summary>
private string url;

public string Url {
get { return url; }
set { url = value; }
}
}


 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: