HTTP定义了与服务器交互的不同方法,基本方法有GET,POST,PUT,DELETE,分别对于查,该,增,删。一般情况下我们只用到GET和POST,其他两种都也可以用GET和POST来实现,很多浏览器也只实现了GET和POST两种方法

  GET:用户获取信息

    安全的:不会对服务器上的数据进行修改,和破坏

    幂等的:相同的请求所返回的结果相同

    参数是通过Url来传输,接在Url后面中间用?分开,不同参数之间用&分开,下面表示传递两个参数param1和param2,值为value1和value2

      http://songurl/index.htm?param1=value1&param2=value2

    通过上面可以看到,GET请求数据在隐私方面又是不安全的,因为Url上的信息可以直接让用户看到,这样不利于隐私保护

  POST:用于更新数据

    传递的数据对用户隐藏,封装在包里,具体看演示

    有时候请求会重定向,但我们就需要从重定向url获取东西,这时可以设置重定向禁用,你就可以从headers的Location属性中获取重定向地址

      request.AllowAutoRedirect = false;

      string[] values = request.Headers.GetValues("Location");

下面是辅助类的定义

  1. public class HttpHelper
  2. {
  3. /// <summary>
  4. /// 创建GET方式的HTTP请求
  5. /// </summary>
  6. public static HttpWebResponse CreateGetHttpResponse(string url, int timeout, string userAgent, CookieCollection cookies)
  7. {
  8. HttpWebRequest request = null;
  9. if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
  10. {
  11. //对服务端证书进行有效性校验(非第三方权威机构颁发的证书,如自己生成的,不进行验证,这里返回true)
  12. ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
  13. request = WebRequest.Create(url) as HttpWebRequest;
  14. request.ProtocolVersion = HttpVersion.Version10; //http版本,默认是1.1,这里设置为1.0
  15. }
  16. else
  17. {
  18. request = WebRequest.Create(url) as HttpWebRequest;
  19. }
  20. request.Method = "GET";
  21.  
  22. //设置代理UserAgent和超时
  23. //request.UserAgent = userAgent;
  24. //request.Timeout = timeout;
  25. if (cookies != null)
  26. {
  27. request.CookieContainer = new CookieContainer();
  28. request.CookieContainer.Add(cookies);
  29. }
  30. return request.GetResponse() as HttpWebResponse;
  31. }
  32.  
  33. /// <summary>
  34. /// 创建POST方式的HTTP请求
  35. /// </summary>
  36. public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters, int timeout, string userAgent, CookieCollection cookies)
  37. {
  38. HttpWebRequest request = null;
  39. //如果是发送HTTPS请求
  40. if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
  41. {
  42. //ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
  43. request = WebRequest.Create(url) as HttpWebRequest;
  44. //request.ProtocolVersion = HttpVersion.Version10;
  45. }
  46. else
  47. {
  48. request = WebRequest.Create(url) as HttpWebRequest;
  49. }
  50. request.Method = "POST";
  51. request.ContentType = "application/x-www-form-urlencoded";
  52.  
  53. //设置代理UserAgent和超时
  54. //request.UserAgent = userAgent;
  55. //request.Timeout = timeout;
  56.  
  57. if (cookies != null)
  58. {
  59. request.CookieContainer = new CookieContainer();
  60. request.CookieContainer.Add(cookies);
  61. }
  62. //发送POST数据
  63. if (!(parameters == null || parameters.Count == 0))
  64. {
  65. StringBuilder buffer = new StringBuilder();
  66. int i = 0;
  67. foreach (string key in parameters.Keys)
  68. {
  69. if (i > 0)
  70. {
  71. buffer.AppendFormat("&{0}={1}", key, parameters[key]);
  72. }
  73. else
  74. {
  75. buffer.AppendFormat("{0}={1}", key, parameters[key]);
  76. i++;
  77. }
  78. }
  79. byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
  80. using (Stream stream = request.GetRequestStream())
  81. {
  82. stream.Write(data, 0, data.Length);
  83. }
  84. }
  85. string[] values = request.Headers.GetValues("Content-Type");
  86. return request.GetResponse() as HttpWebResponse;
  87. }
  88.  
  89. /// <summary>
  90. /// 获取请求的数据
  91. /// </summary>
  92. public static string GetResponseString(HttpWebResponse webresponse)
  93. {
  94. using (Stream s = webresponse.GetResponseStream())
  95. {
  96. StreamReader reader = new StreamReader(s, Encoding.UTF8);
  97. return reader.ReadToEnd();
  98.  
  99. }
  100. }
  101.  
  102. /// <summary>
  103. /// 验证证书
  104. /// </summary>
  105. private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
  106. {
  107. if (errors == SslPolicyErrors.None)
  108. return true;
  109. return false;
  110. }
  111. }

【C#、csharp】HTTPGET,POST请求的更多相关文章

  1. HttpGet/HttpPost请求方法

    /// <summary> /// HttpGet请求 /// </summary> /// <param name="url">HttpGet ...

  2. Android 网络请求详解

    我们知道大多数的 Android 应用程序都是通过和服务器进行交互来获取数据的.如果使用 HTTP 协议来发送和接收网络数据,就免不了使用 HttpURLConnection 和 HttpClient ...

  3. Java之网络请求工具类(依赖:org.apache.http;注:HttpClient 4.4,HttpCore 4.4)

    到此处可以去下载依赖包:http://hc.apache.org/downloads.cgi import java.util.List; import org.apache.http.HttpSta ...

  4. Android进阶(一)几种网络请求方式详解

    Ref:http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面 ...

  5. spring MVC 管理HttpClient---实现在java中直接向Controller发送请求

    在spring MVC中,大多数时候是由客户端的页面通过ajax等方式向controller发送请求,但有时候需要在java代码中直接向controller发送请求,这时可以使用HttpCilent实 ...

  6. 使用HttpClient发送Get/Post请求 你get了吗?

    HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议 ...

  7. android 网络编程 HttpGet类和HttpPost类使用详解

    虽然在登录系统中使用了Web Service与服务端进行交互.但是在传递大量的数量时,Web Service显得有些笨拙.在本节将介绍移动电子相册中使用的另外一种与数据库交互的方法.直接发送HTTP  ...

  8. httpclient实现的get请求及post请求

    导出mven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId& ...

  9. 使用HttpClient配置代理服务器模拟浏览器发送请求调用接口测试

    在调用公司的某个接口时,直接通过浏览器配置代理服务器可以请求到如下数据: 请求url地址:http://wwwnei.xuebusi.com/rd-interface/getsales.jsp?cid ...

  10. httpclient 请求 json 数据

    基于\httpcomponents-client-4.5.5需要引入相关jar包如下: 必须导入commons-logging-1.2.jar,否则会提示 json api接口地址: https:// ...

随机推荐

  1. 我的第一个REST客户端程序!

    Delphi:XE8 看了好几天的资料了,也没有弄出来一个REST程序,尝试了XE8中带的例子,也都没有搞懂.我在网上不断搜索,看是否能够找到适合自己的文章,希望能够做出来一个REST的小例子,万幸, ...

  2. HDOJ 1427(dfs) 速算24点

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路分析: 题目要求判断是否存在一种运算组合使得4个数的计算结果为24,因为搜索的层次为3层,不 ...

  3. tomcat的webappclassloader中一个奇怪的异常信息

    假设一个应用抛出大量的Class not found信息,一般你会怀疑包冲突.但是tomcat的webappclassloader却有这种问题: 假设一个应用公布出现故障, webappclasslo ...

  4. HDU 3032 Nim or not Nim? (sg函数求解)

    Nim or not Nim? Problem Description Nim is a two-player mathematic game of strategy in which players ...

  5. 高性能网站优化-创建快速响应的Web

    <高性能网站建设进阶指南> 优化原则 优化的目的是希望降低程序的整体开销. 减少开销 通常认为开销就是程序的执行时间.而在进行优化工作时,应该把重点放在对程序开销影响最大的那部分. 假设我 ...

  6. No.4小白的HTML+CSS心得篇

    书读百遍,其义自见 遵照这句话 今天再次重新把慕课网的HTML+CSS看了一遍,再次阅读感受不再是那么陌生,从而心里默默地喜欢上了这种方式,坚持. 好了,开始今天的收获小总结 1.html中,表单&l ...

  7. 杭电oj A + B Again

    A + B Again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  8. Sed简介 (转)

    Sed简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓 ...

  9. Nginx阅读笔记

    Nginx最常用的服务是提供反向代理,大家熟悉的最多的是正向代理,正向代理我们平常接触的最多,例如云梯,我们通过代理服务器作为客户端这边的中介接受请求,隐藏真实的客户,向服务器获取资源.而反向代理顾名 ...

  10. hibernate 事务的隔离级别 5.1

    脏读不可重复读幻读可序列化(符合事务的四个特性的正常情况 ) 解释: 脏读:事务A对数据1做了更新,但是还没有来得及提交 此时事务B对数据1进行了查询获得了事务A更新后的数据, 但是事务A因为一些原因 ...