zoukankan      html  css  js  c++  java
  • 使用HttpWebRequest发送HTTP请求,同时支持GET/POST方式提交。

    使用HttpWebRequest发送HTTP请求,同时支持GET/POST方式提交。
    理论上支持任何HTTP 1.1 协议谓词,不过就实际使用情况来说,仅对GET/POST方式进行了测试,其他谓词并未测试。

    /// <summary>
    /// 使用HttpWebRequest发送HTTP请求,同时支持GET/POST方式提交。
    /// </summary>
    /// <param name="url">要访问的URL地址</param>
    /// <param name="queryString"><![CDATA[QueryString形式的数据,如:action=1&id=2]]></param>
    /// <param name="method">任何HTTP 1.1 协议谓词:GET、HEAD、POST、PUT、DELETE、TRACE 或OPTIONS。</param>
    /// <param name="encoding">页面使用的编码</param>
    /// <remarks>
    /// <para>
    /// 请注意:
    /// <ol>
    /// <li><paramref name="queryString"/> 中如果有中文,则需要使用Uri.EscapeDataString(string) 
    /// 或Uri.EscapeUriString(string) 进行对应转换。
    </li> /// <li>理论上支持任何HTTP 1.1 协议谓词,不过就实际使用情况来说,仅对GET/POST方式进行了测试,
    /// 其他谓词并未测试。
    </li> /// </ol> /// </para> /// </remarks> /// <returns></returns> public static string GetWebRequest(string url, string queryString, string method, Encoding encoding) { if (!IsUrl(url)) { throw new ArgumentException("网络地址无效!", "urlHead"); } if (!IsMethodOk(method)) { throw new ArgumentException("Http协议谓词无效!", "method"); } string html = string.Empty; string fullUrl; if (url.Contains("?")) { fullUrl = url + "&" + queryString; } else { fullUrl = url + "?" + queryString; } try { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(fullUrl); request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; "
                    +".NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"
    ; request.Method = method; if (method == "POST") { byte[] data = encoding.GetBytes(queryString); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; using (Stream reqStream = request.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } } using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { if (response != null) { if (response.StatusCode == HttpStatusCode.OK && request.HaveResponse) { using (StreamReader sr = new StreamReader(response.GetResponseStream(), encoding)) { if (sr != null) { html = sr.ReadToEnd(); } } } response.Close(); } } } catch (Exception ex) { html = ex.ToString(); } return html; }
  • 相关阅读:
    dpkg 删除 百度网盘 程序
    ubuntu 安装go
    解决 swap file “*.swp”already exists!问题
    ROS Topic 常用指令
    正交概念
    vim 永久显示行号 & 临时显示行号
    awk、grep、sed
    Keil中使用Astyel进行C语言的格式化
    红黑树学习
    802.11 对于multicast 和 broadcast的处理
  • 原文地址:https://www.cnblogs.com/uonun/p/1698980.html
Copyright © 2011-2022 走看看