WeChatHelper3.1.0.58.dll接口适用所有语言,今天我来讲一下用C#来做个实例调用。
第一步:下载并引用Newtonsoft.Json.dll类库
因为本接口是基于HTTP+JSON的,所有我们先下载c#开源的类库Newtonsoft.Json(下载地址 http://json.codeplex.com/ )
在项目中引用Newtonsoft.Json.dll(根据自己的版本,我用的是VS2017 版本是4.5)
第二步:创建HTTP类
HttpHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace WechatHelper
{
class HttpHelper
{
public string GetData(string url)
{
string data = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream ResponseStream = response.GetResponseStream();
StreamReader StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8"));
data = StreamReader.ReadToEnd();
StreamReader.Close();
ResponseStream.Close();
}
catch (Exception ex)
{
}
finally
{
}
return data;
}
public string GetPostData(string url, string param)
{
string data = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json;charset=utf-8";
if (!string.IsNullOrEmpty(param))
{
Stream RequestStream = request.GetRequestStream();
byte[] bytes = Encoding.UTF8.GetBytes(param);
RequestStream.Write(bytes, 0, bytes.Length);
RequestStream.Close();
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream ResponseStream = response.GetResponseStream();
StreamReader StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8"));
data = StreamReader.ReadToEnd();
StreamReader.Close();
ResponseStream.Close();
}
catch (Exception ex)
{
}
finally
{
}
return data;
}
}
}
第三步:创建JsonHelper类
本类只对聊天记录做处理,其它的可以照此方法。
JsonHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using WechatHelper.RecordObject;
namespace WechatHelper
{
class JsonHelper
{
/// <summary>
/// 获取聊天记录数据
/// </summary>
/// <param name="jsonText">JSON文本数据</param>
/// <returns></returns>
static public RecordObject.RecordObject GetRecords(string jsonText)
{
RecordObject.RecordObject recordObject= JsonConvert.DeserializeObject<RecordObject.RecordObject>(jsonText);
return recordObject;
}
}
}
第四步:创建聊天记录对象
聊天记录对象是根据聊天记录数据和类型创建的,我们来看一下聊天记录的JSON数据结构:
{
"cmdid": 7,
"maxid": 5,
"count": 75,
"status": "ok",
"qq": "2376140244",
"data": [
{
"localId": 42,
"MsgSvrID": "2062239765205091112",
"StrTalker": "18618087204@chatroom",
"StrContent": "<?xml version=\"1.0\"?>\n<msg>\n\t<img aeskey=\"611118464e36d48e86c891c79e25b07c\" encryver=\"1\" cdnthumbaeskey=\"611118464e36d48e86c891c79e25b07c\" cdnthumburl=\"3058020100044c304a0201000204be9026a302032f5d0302045938f0b702045fefffb90425617570696d675f383038376264343062646134646465335f31363039353634303839373537020401090a020201000405004c56fb00\" cdnthumblength=\"4043\" cdnthumbheight=\"140\" cdnthumbwidth=\"56\" cdnmidheight=\"0\" cdnmidwidth=\"0\" cdnhdheight=\"0\" cdnhdwidth=\"0\" cdnmidimgurl=\"3058020100044c304a0201000204be9026a302032f5d0302045938f0b702045fefffb90425617570696d675f383038376264343062646134646465335f31363039353634303839373537020401090a020201000405004c56fb00\" length=\"24332\" md5=\"692efd877bce4ad7dc41becca0d2278d\" hevc_mid_size=\"24332\" />\n</msg>\n",
"CreateTime": 1609564091,
"IsSender": 0,
"type": 3,
"SubType": 0,
"CompressContent": "",
"BytesExtra": {
"wxid": "wxid_y7hw81zn588b12",
"thumb": "keepmoving8\\FileStorage\\Image\\Thumb\\2021-01\\e03c67108d6c39c020c48696dbd36916_t.dat",
"image": "keepmoving8\\FileStorage\\Image\\2021-01\\4953c7f182c4741eec97c9ab6bfe1eb4.dat",
"video": ""
}
},
{
"localId": 43,
"MsgSvrID": "3036343329427015238",
"StrTalker": "2656683682@chatroom",
"StrContent": "收满不收弹头40",
"CreateTime": 1609564122,
"IsSender": 0,
"type": 1,
"SubType": 0,
"CompressContent": "",
"BytesExtra": {
"wxid": "wxid_87rw855vmv4h22",
"thumb": "",
"image": "",
"video": ""
}
},
{
"localId": 44,
"MsgSvrID": "6558585969683208319",
"StrTalker": "JI282940039",
"StrContent": "要的滴滴我",
"CreateTime": 1609564128,
"IsSender": 0,
"type": 1,
"SubType": 0,
"CompressContent": "",
"BytesExtra": {
"wxid": "",
"thumb": "",
"image": "",
"video": ""
}
}
]
}
上面记录中有三种记录:
1.群图片消息,群发送的微信ID和图片的地址已显示在扩展数据中。
2.群文本消息,群发送的微信ID显示在扩展数据中。
3.普通好友文本消息,扩展数据都是空。
根据JSON数据结构,我们在c#中构造聊天记录对象模型:
RecordObject.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
/// <summary>
/// 聊天记录对象
/// </summary>
namespace WechatHelper.RecordObject
{
/// <summary>
/// 聊天记录主要数据
/// </summary>
public class data
{
public int localId { get; set; }//记录ID
public string MsgSvrID { get; set; }//消息ID
public string StrTalker { get; set; }//群消息
public string StrContent { get; set; } //内容
public int CreateTime { get; set; }//创建时间
public int IsSender { get; set; }//是否自己发送
public int type { get; set; }//消息类型
public int SubType { get; set; }//子类型
public string CompressContent { get; set; } //这里为转账金额信息,有+与-表示:收到与转出
public BytesExtra BytesExtra { get; set; }
}
/// <summary>
/// 聊天记录扩展数据
/// </summary>
public class BytesExtra
{
public string wxid { get; set; }// 群消息时发送者微信ID"
public string thumb { get; set; } // 图片类型时缩微图路径"
public string image { get; set; }// 图片或视频类型时图片路径"
public string mp4 { get; set; }//视频类型时MP4路径"
}
/// <summary>
/// 聊天记录对象
/// </summary>
public class RecordObject
{
public int cmdid { get; set; }
public int maxid { get; set; }//记录索引
public int count { get; set; }//信息条数
public string qq { get; set; }//本人QQ
public string status { get; set; }//状态
public List<data> data { get; set; }//消息主体数组
}
}
第五步:主程序调用
上面步骤都完成了,就等着主程序调用了,我们在主窗体中创建一个 Timer定时器,每3秒中刷新一次聊天记录:
private void timer1_Tick(object sender, EventArgs e)
{
HttpHelper http = new HttpHelper();
string data =http.GetData("http://127.0.0.1/?cmdid=7");
RecordObject.RecordObject recordObject = JsonHelper.GetRecords(data);
foreach(RecordObject.data record in recordObject.data)
{
txt_resault.AppendText(record.StrContent+"\r\n");
txt_resault.AppendText("***********************************************************\r\n");
}
}
看,就是这么简单!
c#调用下载地址(vs2017 .net4.5版本):https://download.csdn.net/download/keepmoving0407/14010292
也可以进群交流下载:(交流群:561112477 1005923608)