请选择 进入手机版 | 继续访问电脑版

[C#教程] C#通过GET/POST方式发送Http哀求

[复制链接]
查看39 | 回复7 | 2021-9-14 11:36:39 | 显示全部楼层 |阅读模式
目次

先容 http哀求 的两种方式,get和post方式。并用C#语言实现,怎样 哀求 url并获取返回的数据

两者的区别:

参数

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就是现实 的传输数据。

传输数据的大小

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哀求

哀求 类

  1. ///
  2. /// Get请求
  3. ///
  4. ///
  5. /// 字符串
  6. public static string GetHttpResponse(string url, int Timeout)
  7. {
  8. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  9. request.Method = "GET";
  10. request.ContentType = "text/html;charset=UTF-8";
  11. request.UserAgent = null;
  12. request.Timeout = Timeout;
  13. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  14. Stream myResponseStream = response.GetResponseStream();
  15. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
  16. string retString = myStreamReader.ReadToEnd();
  17. myStreamReader.Close();
  18. myResponseStream.Close();
  19. return retString;
  20. }
复制代码

调用方法

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

Post哀求

  1. /// 创建POST方式的HTTP请求
  2. public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)
  3. {
  4. HttpWebRequest request = null;
  5. //如果是发送HTTPS请求
  6. if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
  7. {
  8. request = WebRequest.Create(url) as HttpWebRequest;
  9. }
  10. else
  11. {
  12. request = WebRequest.Create(url) as HttpWebRequest;
  13. }
  14. request.Method = "POST";
  15. request.ContentType = "application/x-www-form-urlencoded";
  16. //设置代理UserAgent和超时
  17. //request.UserAgent = userAgent;
  18. //request.Timeout = timeout;
  19. if (cookies != null)
  20. {
  21. request.CookieContainer = new CookieContainer();
  22. request.CookieContainer.Add(cookies);
  23. }
  24. //发送POST数据
  25. if (!(parameters == null || parameters.Count == 0))
  26. {
  27. StringBuilder buffer = new StringBuilder();
  28. int i = 0;
  29. foreach (string key in parameters.Keys)
  30. {
  31. if (i > 0)
  32. {
  33. buffer.AppendFormat("&{0}={1}", key, parameters[key]);
  34. }
  35. else
  36. {
  37. buffer.AppendFormat("{0}={1}", key, parameters[key]);
  38. i++;
  39. }
  40. }
  41. byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
  42. using (Stream stream = request.GetRequestStream())
  43. {
  44. stream.Write(data, 0, data.Length);
  45. }
  46. }
  47. string[] values = request.Headers.GetValues("Content-Type");
  48. return request.GetResponse() as HttpWebResponse;
  49. }
  50. /// <summary>
  51. /// 获取请求的数据
  52. /// </summary>
  53. public static string GetResponseString(HttpWebResponse webresponse)
  54. {
  55. using (Stream s = webresponse.GetResponseStream())
  56. {
  57. StreamReader reader = new StreamReader(s, Encoding.UTF8);
  58. return reader.ReadToEnd();
  59. }
  60. }
复制代码

调用方法

  1. //参数p
  2. IDictionary<string, string> parameters = new Dictionary<string, string>();
  3. parameters.Add("p", HttpUtility.UrlEncode(p));
  4. //http请求
  5. System.Net.HttpWebResponse res = HttpHelper.CreatePostHttpResponse(url, parameters, 3000, null, null);
  6. if (res == null)
  7. {
  8. Response.Redirect("RequestFailed.aspx?result=出错了,可能是由于您的网络环境差、不稳定或安全软件禁止访问网络,您可在网络好时或关闭安全软件在重新访问网络。");
  9. }
  10. else
  11. {
  12. //获取返回数据转为字符串
  13. string mes = HttpHelper.GetResponseString(res);
  14. T model = JsonHelper.DeserializeJsonToObject<T>(mes);
  15. }
复制代码

到此这篇关于C#通过GET/POST方式发送Http哀求 的文章就先容 到这了,更多干系 C# 发送Http哀求 内容请搜索 脚本之家从前 的文章或继续欣赏 下面的干系 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 热忽行退 | 2021-9-14 14:33:55 | 显示全部楼层
内容很有深度!
回复

使用道具 举报

avatar 就是爱巴萨衣 | 2021-9-19 00:17:48 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,影视频道的网站所有电影和连续剧都可以免费看的。访问地址:http://tv.mxswl.com
回复

使用道具 举报

avatar Guogangts | 2021-9-28 05:54:38 | 显示全部楼层
记得吃药!
回复

使用道具 举报

avatar 大脚吴妈 | 2021-9-29 19:40:11 | 显示全部楼层
admin楼主是一个典型的文艺青年啊!
回复

使用道具 举报

avatar JDLMDJIA | 2021-10-6 06:02:11 | 显示全部楼层
最近回了很多帖子,都没人理我!
回复

使用道具 举报

admin楼主会死的很有节奏的!
回复

使用道具 举报

avatar 哲911 | 4 天前 | 显示全部楼层
admin楼主该去看心理医生了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则