你的位置:首页 > ASP.net教程

[ASP.net教程]本来想用jsonp来跨域请求的,但sb写接口的,不改返回值。。。只得在后台请求接口了。。。


string url = "ssss.com";
//demo里的是get请求HttpWebResponse w = HttpHelper.CreateGetHttpResponse(url, 30000, null, null);StreamReader sr = new StreamReader(w.GetResponseStream());string/*这是Json字符串*/ jsonstr = sr.ReadToEnd();

 

using System;using System.Collections.Generic;using System.IO;using System.Net;using System.Net.Security;using System.Security.Cryptography.X509Certificates;using System.Text;public class HttpHelper{  /// <summary>   /// 创建GET方式的HTTP请求   /// </summary>   ///   public static HttpWebResponse CreateGetHttpResponse(string url, int timeout, string userAgent, CookieCollection cookies)  {    HttpWebRequest request = null;    if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))    {      //对服务端证书进行有效性校验(非第三方权威机构颁发的证书,如自己生成的,不进行验证,这里返回true)      ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);      request = WebRequest.Create(url) as HttpWebRequest;      request.ProtocolVersion = HttpVersion.Version10;  //http版本,默认是1.1,这里设置为1.0    }    else    {      request = WebRequest.Create(url) as HttpWebRequest;    }    request.Method = "GET";    //设置代理UserAgent和超时    //request.UserAgent = userAgent;    //request.Timeout = timeout;    if (cookies != null)    {      request.CookieContainer = new CookieContainer();      request.CookieContainer.Add(cookies);    }    return request.GetResponse() as HttpWebResponse;  }  /// <summary>   /// 创建POST方式的HTTP请求   /// </summary>   public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)  {    HttpWebRequest request = null;    //如果是发送HTTPS请求     if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))    {      //ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);      request = WebRequest.Create(url) as HttpWebRequest;      //request.ProtocolVersion = HttpVersion.Version10;    }    else    {      request = WebRequest.Create(url) as HttpWebRequest;    }    request.Method = "POST";    request.ContentType = "application/x-www-form-urlencoded";    //设置代理UserAgent和超时    //request.UserAgent = userAgent;    //request.Timeout = timeout;     if (cookies != null)    {      request.CookieContainer = new CookieContainer();      request.CookieContainer.Add(cookies);    }    //发送POST数据     if (!(parameters == null || parameters.Count == 0))    {      StringBuilder buffer = new StringBuilder();      int i = 0;      foreach (string key in parameters.Keys)      {        if (i > 0)        {          buffer.AppendFormat("&{0}={1}", key, parameters[key]);        }        else        {          buffer.AppendFormat("{0}={1}", key, parameters[key]);          i++;        }      }      byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());      using (Stream stream = request.GetRequestStream())      {        stream.Write(data, 0, data.Length);      }    }    string[] values = request.Headers.GetValues("Content-Type");    return request.GetResponse() as HttpWebResponse;  }  /// <summary>  /// 获取请求的数据  /// </summary>  public static string GetResponseString(HttpWebResponse webresponse)  {    using (Stream s = webresponse.GetResponseStream())    {      StreamReader reader = new StreamReader(s, Encoding.UTF8);      return reader.ReadToEnd();    }  }  /// <summary>  /// 验证证书  /// </summary>  private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)  {    if (errors == SslPolicyErrors.None)      return true;    return false;  }}