最近再写一个微信开发的例子
想利用网络爬虫技术获取到数据然后主动发送给某个用户(企业号)
然后建立了一个ashx接受python 或者c# 模拟的post请求
python/C# post的访问的地址肯定一个已经发布的不是localhost (用localhost去执行是没有问题的)
解析数据没什么大问题 用的Json.net
这段代码在 push.ashx中
DataObj = JObject.Parse(Jsondata);
Dataobj = JObject.Parse(DataObj["Data"].ToString());
DataArry = JArray.Parse(Dataobj["listItem"].ToString());
ID = DataObj["ID"].ToString();
Mylog.Write("获得ID" + ID);
Mylog.Write("获得data" + DataArry.ToString());
if (DataArry != null && !string.IsNullOrEmpty(ID))
{
MyMsg msg = new MyMsg(ID, DataArry);
WeixinClass.SendMsgToWeiXin("{'PeopleJson':['" + msg.ID + "']}", "1", string.Format(Msg, msg.Title, msg.Detail).ToString());
Mylog.Write(string.Format(ReturnStr, "ok", "发送信息成功").ToString());
context.Response.Write(string.Format(ReturnStr, "ok", "发送信息成功").ToString());
context.Response.End();
}
这是C# 模拟的http post 请求
public static string PostByWebClient(string uri, string paramStr)
{
Encoding encoding = Encoding.UTF8;
string result = string.Empty;
WebClient wc = new WebClient();
// 采取POST方式必须加的Header
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] postData = encoding.GetBytes(paramStr);
byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流
return encoding.GetString(responseData);// 解码
}
然后整个代码的流程是这样的
我用webform的后台 通过用 PostByWebClient 函数模拟post的请求并且传递了一系列的josn字符串--data
PostByWebClient("http://202.203.***,**:25600/Handler1.ashx",data);
可以获取到数据并且解析
然后在ashx中代码运行到 WeixinClass.SendMsgToWeiXin这个函数里面
在这个函数里面先用C#模拟了get请求获取某样数据(是可以获取到的)
其次在用c#模拟post请求发送信息给微信提供的接口 让它主动发信息
此时错误就出现了 --- 报错给我的webform页面使用的那个PostByWebClient()中的这一行代码
byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流
说基础连接已关闭 接受时发生错误
但是!!!
我再发布的服务器上去用webform请求 localhost:****/push.ashx 是能发送信息到我的微信的
希望能指点小的一二!!
真的非常感谢