找了好久 看了下, 好多的坑 ,也是醉了 。。。。。。。。。。
protected void Page_Load(object sender, EventArgs e)
{
string strReturn = get_accessToken();//获取access_token
GetPage(strReturn);
// string postUrl = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" + strReturn;
//SeleteGetPage(postUrl)
}
//获取access_token
public static string get_accessToken()
{
string grant_type = "client_credential";
string appid = "";//你的appid
string secret = "";//你的secret
string tokenUrl = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type={0}&appid={1}&secret={2}", grant_type, appid, secret);
//提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法,
//WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法
WebClient client = new WebClient();
//从微信API下载access_token 并返回access_token 的值
string strReturn = Encoding.UTF8.GetString(client.DownloadData(tokenUrl));
// string accesstoken = strReturn.Substring(strReturn.IndexOf("access_token\":\"") + 15, strReturn.IndexOf("\",\"expires") - (strReturn.IndexOf("access_token\":\"")+15));
//反序列化JsonConvert.DeserializeObject
GetAccess_Token getAccess_Token = JsonConvert.DeserializeObject<GetAccess_Token>(strReturn);
return getAccess_Token.access_token;
}
//创建菜单
public string GetPage(string accessToken)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
string url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + accessToken;
string postData = "{\"button\":[{\"type\":\"click\",\"name\":\"资讯信息\",\"key\":\"P1\"},{\"type\":\"view\",\"name\":\"学习平台\",\"url\":\"http://www.baidu.com\"}]}]}";
byte[] data = encoding.GetBytes(postData);
// 准备请求...
try
{
// 设置参数
request = WebRequest.Create(url) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//WriteLog("response" + response);
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页(html)代码
string content = sr.ReadToEnd();
string err = string.Empty;
Response.Write(content);
return content;
}
catch (Exception ex)
{
string err = ex.Message;
return string.Empty;
}
}
//查询菜单和删除菜单只是传过去的URL不同 ,替他都一样
public string SeleteGetPage(string posturl)
{
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
// 准备请求...
try
{
// 设置参数
request = WebRequest.Create(posturl) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页(html)代码
string content = sr.ReadToEnd();
string err = string.Empty;
Response.Write(content);
return content;
}
catch (Exception ex)
{
string err = ex.Message;
return string.Empty;
}
}
public class GetAccess_Token
{
//微信返回的accesstoken
public string access_token;
//微信返回的accesstoken的有效时间 7200
public int expires_in;
public string Access_token
{
get
{
return this.access_token;
}
set
{
this.access_token = value;
}
}
public int Expires_in
{
get
{
return this.expires_in;
}
set
{
this.expires_in = value;
}
}
}