您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页C#通过GETPOST方式发送Http请求

C#通过GETPOST方式发送Http请求

来源:欧得旅游网
C#通过GETPOST⽅式发送Http请求

⽬录

两者的区别:参数

传输数据的⼤⼩安全性Get请求Post请求介绍http请求的两种⽅式,get和post⽅式。并⽤C#语⾔实现,如何请求url并获取返回的数据

两者的区别:

参数

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

传输数据的⼤⼩

GET,特定的浏览器和服务器对URL的长度有。因此,在使⽤GET请求时,传输数据会受到URL长度的。

POST,由于不是URL传值,理论上是不会受的,但是实际上各个服务器会规定对POST提交数据⼤⼩进⾏,Apache、IIS都有各⾃的配置。

安全性

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

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(res)}

Post请求

/// 创建POST⽅式的HTTP请求

public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary parameters, int timeout, string userAgent, CookieCollection cookies) {

HttpWebRequest request = null; //如果是发送HTTPS请求

if (url.StartsWith(\"https\ {

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}\ } else {

buffer.AppendFormat(\"{0}={1}\ 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; }

///

/// 获取请求的数据 ///

public static string GetResponseString(HttpWebResponse webresponse) {

using (Stream s = webresponse.GetResponseStream()) {

StreamReader reader = new StreamReader(s, Encoding.UTF8); return reader.ReadToEnd(); } }

调⽤⽅法

//参数p

IDictionary parameters = new Dictionary();parameters.Add(\"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(mes);}

到此这篇关于C#通过GET/POST⽅式发送Http请求的⽂章就介绍到这了,更多相关C# 发送Http请求内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务