别的不多少了直接代码就行了:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.Net.Security;
  7. using System.Security.Authentication;
  8. using System.Security.Cryptography.X509Certificates;
  9. using System.IO;
  10.  
  11. namespace WXMaster.Models
  12. {
  13. public class PostHelp
  14. {
  15. public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
  16. {
  17. //直接确认,否则打不开
  18. return true;
  19. }
  20.  
  21. #region 处理http POST请求,返回数据
  22. /// <summary>
  23. /// 处理http POST请求,返回数据
  24. /// </summary>
  25. /// <param name="json">请求参数</param>
  26. /// <param name="url">请求接口地址</param>
  27. /// <param name="isUseCert">是否使用证书</param>
  28. /// <param name="timeout">设置超时时间</param>
  29. /// <returns>http POST成功后返回的数据,失败抛WebException异常</returns>
  30. public static string Post(string json, string url, bool isUseCert, int timeout)
  31. {
  32. System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接
  33.  
  34. string result = "";//返回结果
  35.  
  36. HttpWebRequest request = null;
  37. HttpWebResponse response = null;
  38. Stream reqStream = null;
  39.  
  40. try
  41. {
  42. //设置最大连接数
  43. ServicePointManager.DefaultConnectionLimit = ;
  44. //设置https验证方式
  45. if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
  46. {
  47. ServicePointManager.ServerCertificateValidationCallback =
  48. new RemoteCertificateValidationCallback(CheckValidationResult);
  49. }
  50.  
  51. /***************************************************************
  52. * 下面设置HttpWebRequest的相关属性
  53. * ************************************************************/
  54. request = (HttpWebRequest)WebRequest.Create(url);
  55.  
  56. request.Method = "POST";
  57. request.Timeout = timeout * ;
  58.  
  59. //设置POST的数据类型和长度
  60. request.ContentType = "application/json;charset=UTF-8";
  61. byte[] data = System.Text.Encoding.UTF8.GetBytes(json);
  62. request.ContentLength = data.Length;
  63.  
  64. //往服务器写入数据
  65. reqStream = request.GetRequestStream();
  66. reqStream.Write(data, , data.Length);
  67. reqStream.Close();
  68.  
  69. //获取服务端返回
  70. response = (HttpWebResponse)request.GetResponse();
  71.  
  72. //获取服务端返回数据
  73. StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
  74. result = sr.ReadToEnd().Trim();
  75. sr.Close();
  76. }
  77. catch (System.Threading.ThreadAbortException e)
  78. {
  79.  
  80. System.Threading.Thread.ResetAbort();
  81. }
  82. catch (WebException e)
  83. {
  84.  
  85. if (e.Status == WebExceptionStatus.ProtocolError)
  86. {
  87.  
  88. }
  89. }
  90. catch (Exception e)
  91. {
  92.  
  93. }
  94. finally
  95. {
  96. //关闭连接和流
  97. if (response != null)
  98. {
  99. response.Close();
  100. }
  101. if (request != null)
  102. {
  103. request.Abort();
  104. }
  105. }
  106. return result;
  107. }
  108. #endregion
  109.  
  110. #region 处理http GET请求,返回数据
  111. /// <summary>
  112. /// 处理http GET请求,返回数据
  113. /// </summary>
  114. /// <param name="url">请求的url地址</param>
  115. /// <returns>http GET成功后返回的数据,失败抛WebException异常</returns>
  116. public static string Get(string url)
  117. {
  118. System.GC.Collect();
  119. string result = "";
  120.  
  121. HttpWebRequest request = null;
  122. HttpWebResponse response = null;
  123.  
  124. //请求url以获取数据
  125. try
  126. {
  127. //设置最大连接数
  128. ServicePointManager.DefaultConnectionLimit = ;
  129. //设置https验证方式
  130. if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
  131. {
  132. ServicePointManager.ServerCertificateValidationCallback =
  133. new RemoteCertificateValidationCallback(CheckValidationResult);
  134. }
  135.  
  136. /***************************************************************
  137. * 下面设置HttpWebRequest的相关属性
  138. * ************************************************************/
  139. request = (HttpWebRequest)WebRequest.Create(url);
  140.  
  141. request.Method = "GET";
  142.  
  143. //获取服务器返回
  144. response = (HttpWebResponse)request.GetResponse();
  145.  
  146. //获取HTTP返回数据
  147. StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
  148. result = sr.ReadToEnd().Trim();
  149. sr.Close();
  150. }
  151. catch (System.Threading.ThreadAbortException e)
  152. {
  153.  
  154. System.Threading.Thread.ResetAbort();
  155. }
  156. catch (WebException e)
  157. {
  158.  
  159. }
  160. catch (Exception e)
  161. {
  162.  
  163. }
  164. finally
  165. {
  166. //关闭连接和流
  167. if (response != null)
  168. {
  169. response.Close();
  170. }
  171. if (request != null)
  172. {
  173. request.Abort();
  174. }
  175. }
  176. return result;
  177. }
  178. #endregion
  179. }
  180.  
  181. }

HttpClient请求可以可以查看这位博客哦我就不罗嗦了:https://www.cnblogs.com/louby/p/8021527.html

【HttpWeb】Post和GET请求基本封装的更多相关文章

  1. 基于promise对小程序http请求方法封装

    原因是我不想每次请求都复制粘贴那么长的请求地址,所以我把前边那一坨请求地址作为基础地址,只传后台给的路由就ok,而且,并不是每次请求都要显示正在加载,这对小程序体验很差,所以,我加了个形参,用来判断是 ...

  2. 小程序api请求层封装(Loading全局配置)

    前言 小程序开发,没有vue中的axios那么好使,请求层的封装需要自己来搞. 当然请求层的配置少不了loading,这里索性也就将loading做一个配置,避免以后重复造轮子 请求封装 小程序中有封 ...

  3. AFNetworking 2.5.x 网络请求的封装

    AFNetworking 2.5.x 网络请求的封装 源码地址 https://github.com/YouXianMing/Networking 说明 1. 将block形式的请求转换成用代理来处理 ...

  4. axios浏览器异步请求方法封装 XMLHttpRequest

    axios学习笔记defaults(浏览器端异步请求处理方式) 浏览器异步请求方法封装,主要使用XMLHttpRequest lib/adapters/xhr.js //入口 var utils = ...

  5. C# 后台服务器端 Get 请求函数封装

    请求参数封装 /// <summary> /// 拼接 Get请求参数 /// </summary> /// <param name="parames" ...

  6. 接口测试-Java代码实现接口请求并封装

    前言:在接口测试和Java开发中对接口请求方法进行封装都非常有必要,无论是在我们接口测试的时候还是在开发自测,以及调用某些第三方接口时,都能为我们调用和调试接口提供便捷: Java实现对http请求的 ...

  7. axios请求方法封装.

    axios的使用上一般封装好对应的方法,ES6导出,直接调用,消息通知使用了ElementUI的Message组件. 这是一个封装了axios的Rest风格的工具类,包扩常用的POST,GET,PUT ...

  8. vue-ajax/axios请求函数封装: axios+promise

    项目文件目录/src/api ajax.js /** * ajax 请求函数模块 * 返回值为promise对象 */ import axios from 'axios' export default ...

  9. ajax请求的封装

    前端的工作,免不了要用到交互,请求后端的数据,可能大多人一直选择用jq封装好的方法直接使用,要知道封装这个事我们自己也可以的,今天给大家介绍一种封装方法,而且连跨域问题都不在话下,有了这个函数,是不是 ...

随机推荐

  1. python_day1_常量

    常量 定义: 不变的量为常量,或在程序中不可改变的量 用法: AGE_OF_BOY  =56 注:在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量

  2. SpringMVC源码解读 - HandlerMapping - RequestMappingHandlerMapping请求分发

    AbstractHandlerMethodMapping实现接口getHandlerInternal,定义查找流程 RequestMappingInfoHandlerMapping根据RequestM ...

  3. Alpha 冲刺(1)

    Alpha 冲刺 (1/10)   Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 ...

  4. ·通过wifi_scan学习esp32wifi程序编写

    在ESP32的设计开发中,我们必然会需要使用到wifi或ble功能,今天就讲解下如何将WIFI功能纳入到ESP32中来. 初始化WiFi环境 首先,WiFi子系统的初始化需要由我们自己来自行,当我们写 ...

  5. mysql windows 5.7 安装版下载地址

    https://dev.mysql.com/downloads/windows/installer/5.7.html

  6. GitHub 轻松提速教程

    通过修改hosts文件来提速,获取github的IP地址 访问:https://www.ipaddress.com/ 网址 依次获取以下三个网址的IP github.com github.global ...

  7. 「ZJOI2018」胖(ST表+二分)

    「ZJOI2018」胖(ST表+二分) 不开 \(O_2\) 又没卡过去是种怎么体验... 这可能是 \(ZJOI2018\) 最简单的一题了...我都能 \(A\)... 首先我们发现这个奇怪的图每 ...

  8. SSD报告 - QRadar远程命令执行

    SSD报告 - QRadar远程命令执行 漏洞摘要 QRadar中的多个漏洞允许远程未经身份验证的攻击者使产品执行任意命令.每个漏洞本身并不像链接那么强大 - 这允许用户从未经身份验证的访问更改为经过 ...

  9. Android开发工程师文集-layout_weight讲解

    前言 大家好,给大家带来Android开发工程师文集-layout_weight讲解的概述,希望你们喜欢 Layout_weight的相关代码展示 <TextView android:layou ...

  10. Android开发工程师文集-1 小时学会各种Drawable

    前言 大家好,给大家带来Android开发工程师文集-1 小时学会各种Drawable的概述,希望你们喜欢 Drawable介绍 Drawable为抽象类,drawable与view有区别的地方,主要 ...