.net 微信接口(如何使用微信接口--做过的请进)
想做一个程序通过微信发信息。
有人做过吗?是怎么实现的。
-------------------------------------------------------------------
我找的参考代码,有人知道实现不步骤吗?
<%@ 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;
}
}
}
------解决方案--------------------
看看这个upload/2013/12/201312261202261154.jpg" alt="" >
不是有接收用户信息么
------解决方案--------------------
楼主的代码是用来接收的,不是发送的。
如果想通过电脑发出信息到对方手机的微信上。那么需要知道微信的通信协议和地址。否则连待接收手机的地址都不能知道,实现不了发送。另外微信的协议是加密的。
需要知道这些
------解决方案--------------------
不管是消息推送还是消息回复都应该是xml把,我也没做过
------解决方案--------------------
关注中,希望这个帖子有个好的结果!!
------解决方案--------------------
前几天做这个了,
整体流程是:
1.用户发消息给微信服务器》2.微信服务器收到用户消息》3.微信服务器把消息发给你》4.你解析消息》5.返回给微信服务器》6.微信服务器发消息给用户
------解决方案--------------------
例
/// <summary>
/// 处理文本消息
/// </summary>
/// <param name="xml"></param>
/// <returns></returns>
private static string DoTextMsg(XmlDocument xml)
{
//微信服务器发过来xml
//TODO 取出内容
string touser = xml.SelectSingleNode("xml/ToUserName").InnerText;
string fromuser = xml.SelectSingleNode("xml/FromUserName").InnerText;
//下面就是如何处理xml
xml.SelectSingleNode("xml/ToUserName").InnerText = fromuser;//设置接受消息的用户
xml.SelectSingleNode("xml/FromUserName").InnerText = touser;//消息来自谁
xml.SelectSingleNode("xml/Content").InnerText = "这是回复的内容";//这里是你回复的内容,字符串的怎么写都可以
return xml.OuterXml;//以字符串形式返回
}