打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#通过GET/POST方式发送Http请求

介绍http请求的两种方式,get和post方式。并用C#语言实现,如何请求url并获取返回的数据

两者的区别:

  1. 参数

    Get请求把提交的数据进行简单编码,同时将url的一部分发送到服务器
    比如url:Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
    所以get请求方式提交的数据存在一定的安全隐患,如果在使用对安全性要求教高的操作(比如用户登录,支付),应使用post方式。Get请求是默认的http请求方法,我们一般通过get方法来获取表单数据

    POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。

  2. 传输数据的大小
    GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。

    POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。

  3. 安全性
    POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击

  4. HTTP中的GET,POST,SOAP协议都是在HTTP上运行的

Get请求

请求类

////// Get请求/// /// /// 字符串public static string GetHttpResponse(string url, int Timeout){      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);      request.Method = "GET";      request.ContentType = "text/html;charset=UTF-8";      request.UserAgent = null;      request.Timeout = Timeout;    HttpWebResponse response = (HttpWebResponse)request.GetResponse();    Stream myResponseStream = response.GetResponseStream();    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));    string retString = myStreamReader.ReadToEnd();    myStreamReader.Close();    myResponseStream.Close();    return retString;}

调用方法

string url="Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB";string res = HttpHelper.GetHttpResponse(url, 6000);if (res != null){   T mes = JsonHelper.DeserializeJsonToObject<T>(res)}

Post请求

        /// 创建POST方式的HTTP请求          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))            {                request = WebRequest.Create(url) as HttpWebRequest;            }            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();        }    }

调用方法

//参数pIDictionary<string, string> parameters = new Dictionary<string, string>();parameters.Add("p", HttpUtility.UrlEncode(p));//http请求System.Net.HttpWebResponse res = HttpHelper.CreatePostHttpResponse(url, parameters, 3000, null, null);if (res == null){    Response.Redirect("RequestFailed.aspx?result=出错了,可能是由于您的网络环境差、不稳定或安全软件禁止访问网络,您可在网络好时或关闭安全软件在重新访问网络。");}else{    //获取返回数据转为字符串   string mes = HttpHelper.GetResponseString(res);   T model = JsonHelper.DeserializeJsonToObject<T>(mes);}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
Android http请求数据 设置超时
腾讯官方微信域名检测接口,实时查询域名是否已被微信拦截
post和get的区别
用PHP发送POST请求
HttpURLConnection和HttpClient联网
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服