using System;
using System.IO;
using System.Net;
using System.Text;
///
///
///
public static class HttpOAuth2
{
///
/// 获取token
///
///
///
///
public static string GetToken(string url, string[] paras)
{
try
{
string EndResult = "";
string SendMessageAddress = url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SendMessageAddress);
request.Method = "POST";
request.AllowAutoRedirect = true;
request.ContentType = "application/x-www-form-urlencoded";
string PostData = string.Format("grant_type={0}&client_id={1}&client_secret={2}", paras[0], paras[1], paras[2]);
byte[] byteArray = Encoding.Default.GetBytes(PostData);
request.ContentLength = byteArray.Length;
using (Stream newStream = request.GetRequestStream())
{
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream rspStream = response.GetResponseStream();
using (StreamReader reader = new StreamReader(rspStream, Encoding.UTF8))
{
EndResult = reader.ReadToEnd();
rspStream.Close();
}
response.Close();
return EndResult;
}
catch (Exception ex)
{
return ex.Message;
}
}
///
/// POST请求
///
///
///
///
///
public static string Post(string url, string data, string token)
{
try
{
//将单引号转义成双引号
data = data.Replace("'", "\"");
//创建Web访问对象
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
// 接口慢,设置30分钟超时等待
myRequest.Timeout = 1800000;
//把用户传过来的数据转成“UTF-8”的字节流
byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
myRequest.Method = "POST";
myRequest.ContentLength = buf.Length;
myRequest.ContentType = "application/json;charset=UTF-8";
//myRequest.MaximumAutomaticRedirections = 1;
myRequest.AllowAutoRedirect = true;
//string base64Header = Convert.ToBase64String(Encoding.UTF8.GetBytes(token));
myRequest.Headers.Add("Authorization", "Bearer " + token);
//发送请求
Stream stream = myRequest.GetRequestStream();
stream.Write(buf, 0, buf.Length);
stream.Close();
//获取接口返回值
//通过Web访问对象获取响应内容
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
//通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有编码问题就用这个方法
string returnXml = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
reader.Close();
myResponse.Close();
return returnXml;
}
catch (Exception ex)
{
return ex.Message;
}
}
}