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; } } }