架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 31497|回复: 3

[资料] c#之HTTP请求get,post带重试参数

[复制链接]
发表于 2016-3-21 12:39:34 | 显示全部楼层 |阅读模式
  1. public class WebHttp
  2.     {
  3.         /// <summary>
  4.         /// get请求带重试
  5.         /// </summary>
  6.         /// <param name="Url"></param>
  7.         /// <param name="postDataStr"></param>
  8.         /// <param name="sum"></param>
  9.         /// <returns></returns>
  10.         public static string HttpGet(string Url, string postDataStr, int sum)
  11.         {
  12.             string temp=null;
  13.             for (int i = 0; i < sum; i++)
  14.             {
  15.                 if (string.IsNullOrEmpty(temp) || string.IsNullOrEmpty(temp.Trim()))
  16.                 {
  17.                     temp = HttpGet(Url, postDataStr);
  18.                 }
  19.                 else {
  20.                     break;
  21.                 }
  22.             }
  23.             return temp;
  24.         }
  25.         /// <summary>
  26.         /// post请求带重试
  27.         /// </summary>
  28.         /// <param name="Url"></param>
  29.         /// <param name="postDataStr"></param>
  30.         /// <param name="sum"></param>
  31.         /// <returns></returns>
  32.         public static string HttpPost(string Url, string postDataStr, int sum)
  33.         {
  34.             string temp = null;
  35.             for (int i = 0; i < sum; i++)
  36.             {
  37.                 if (string.IsNullOrEmpty(temp) || string.IsNullOrEmpty(temp.Trim()))
  38.                 {
  39.                     temp = HttpPost(Url, postDataStr);
  40.                 }
  41.                 else
  42.                 {
  43.                     break;
  44.                 }
  45.             }
  46.             return temp;
  47.         }
  48.         /// <summary>
  49.         /// GET请求与获取结果
  50.         /// </summary>
  51.         public static string HttpGet(string Url, string postDataStr)
  52.         {
  53.             try
  54.             {
  55.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
  56.                 request.Method = "GET";
  57.                 request.ContentType = "text/html;charset=UTF-8";
  58.                 request.Timeout = 10000;
  59.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  60.                 Stream myResponseStream = response.GetResponseStream();
  61.                 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
  62.                 string retString = myStreamReader.ReadToEnd();
  63.                 myStreamReader.Close();
  64.                 myResponseStream.Close();
  65.                 return retString;
  66.             }
  67.             catch (Exception ex)
  68.             {
  69.                 return null;
  70.             }
  71.         }
  72.         /// <summary>
  73.         /// POST请求与获取结果
  74.         /// </summary>
  75.         public static string HttpPost(string Url, string postDataStr)
  76.         {
  77.             try
  78.             {
  79.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
  80.                 request.Method = "POST";
  81.                 request.Timeout = 6000000;
  82.                 request.ContentType = "application/x-www-form-urlencoded";
  83.                 request.ContentLength = postDataStr.Length;
  84.                 StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII);
  85.                 writer.Write(postDataStr);
  86.                 writer.Flush();
  87.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  88.                 string encoding = response.ContentEncoding;
  89.                 if (encoding == null || encoding.Length < 1)
  90.                 {
  91.                     encoding = "UTF-8"; //默认编码
  92.                 }
  93.                 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
  94.                 string retString = reader.ReadToEnd();
  95.                 return retString;
  96.             }
  97.             catch (Exception ex)
  98.             {
  99.                 return null;
  100.             }
  101.         }
  102.     }
复制代码






上一篇:linq查询一张表的某几个字段
下一篇:C#获取文件大小
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2016-3-21 12:46:01 | 显示全部楼层
  1. /// <summary>
  2.         /// HttpWebRequest 通过Post
  3.         /// </summary>
  4.         /// <param name="url">URI</param>
  5.         /// <param name="postData">post数据</param>
  6.         /// <returns></returns>
  7.         public static string PostDataGetHtml(string url, string postData)
  8.         {
  9.             try
  10.             {
  11.                 byte[] data = Encoding.UTF8.GetBytes(postData);

  12.                 Uri uri = new Uri(url);
  13.                 HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest;
  14.                 if (req == null)
  15.                 {
  16.                     return "Network error:" + new ArgumentNullException("httpWebRequest").Message;
  17.                 }
  18.                 req.Method = "POST";
  19.                 req.KeepAlive = true;
  20.                 req.ContentType = "application/x-www-form-urlencoded";
  21.                 req.ContentLength = data.Length;
  22.                 req.AllowAutoRedirect = true;

  23.                 Stream outStream = req.GetRequestStream();
  24.                 outStream.Write(data, 0, data.Length);
  25.                 outStream.Close();

  26.                 var res = req.GetResponse() as HttpWebResponse;
  27.                 if (res == null)
  28.                 {
  29.                     return "Network error:" + new ArgumentNullException("HttpWebResponse").Message;
  30.                 }
  31.                 Stream inStream = res.GetResponseStream();
  32.                 var sr = new StreamReader(inStream, Encoding.UTF8);
  33.                 string htmlResult = sr.ReadToEnd();

  34.                 return htmlResult;
  35.             }
  36.             catch (Exception ex)
  37.             {
  38.                 return "网络错误(Network error):" + ex.Message;
  39.             }
  40.         }

  41.         /// <summary>
  42.         /// HttpWebRequest 通过get
  43.         /// </summary>
  44.         /// <param name="url">URI</param>
  45.         /// <returns></returns>
  46.         public static string GetDataGetHtml(string url)
  47.         {
  48.             try
  49.             {
  50.                 HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

  51.                 httpWebRequest.ContentType = "application/x-www-form-urlencoded";
  52.                 httpWebRequest.Method = "GET";
  53.                 //对发送的数据不使用缓存
  54.                 httpWebRequest.AllowWriteStreamBuffering = false;
  55.                 httpWebRequest.Timeout = 300000;
  56.                 httpWebRequest.ServicePoint.Expect100Continue = false;

  57.                 HttpWebResponse webRespon = (HttpWebResponse)httpWebRequest.GetResponse();
  58.                 Stream webStream = webRespon.GetResponseStream();
  59.                 if (webStream == null)
  60.                 {
  61.                     return "网络错误(Network error):" + new ArgumentNullException("webStream");
  62.                 }
  63.                 StreamReader streamReader = new StreamReader(webStream, Encoding.UTF8);
  64.                 string responseContent = streamReader.ReadToEnd();

  65.                 webRespon.Close();
  66.                 streamReader.Close();

  67.                 return responseContent;
  68.             }
  69.             catch (Exception ex)
  70.             {
  71.                 return "网络错误(Network error):" + ex.Message;
  72.             }
  73.         }

  74.         /// <summary>
  75.         /// HttpWebRequest 通过get
  76.         /// </summary>
  77.         /// <param name="url">URI</param>
  78.         /// <returns></returns>
  79.         public static bool GetDataGetHtml(string url, string filePath, ref string mg)
  80.         {
  81.             try
  82.             {
  83.                 HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

  84.                 httpWebRequest.ContentType = "application/x-www-form-urlencoded";
  85.                 httpWebRequest.Method = "GET";
  86.                 //对发送的数据不使用缓存
  87.                 httpWebRequest.AllowWriteStreamBuffering = false;
  88.                 httpWebRequest.Timeout = 300000;
  89.                 httpWebRequest.ServicePoint.Expect100Continue = false;

  90.                 HttpWebResponse webRespon = (HttpWebResponse)httpWebRequest.GetResponse();
  91.                 Stream webStream = webRespon.GetResponseStream();
  92.                 if (webStream == null)
  93.                 {
  94.                     return false;
  95.                 }
  96.                 StreamReader streamReader = new StreamReader(webStream, Encoding.UTF8);
  97.                 string responseContent = streamReader.ReadToEnd();
  98.                 mg = responseContent;
  99.                 webRespon.Close();
  100.                 streamReader.Close();
  101.                 if (responseContent.ToUpper().IndexOf("NULL") > -1)
  102.                 {
  103.                     return false;
  104.                 }
  105.                 else
  106.                 {
  107.                     FileStream fs = new FileStream(filePath, FileMode.Create);
  108.                     var buff = Encoding.UTF8.GetBytes(responseContent);
  109.                     fs.Write(buff, buff.Length, 0);
  110.                     fs.Close();
  111.                     return true;
  112.                 }
  113.             }
  114.             catch (Exception ex)
  115.             {
  116.                 return false;
  117.             }
  118.         }
复制代码


码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2016-9-22 21:42:48 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2020-11-8 16:22:33 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-4-12 23:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表