zoukankan      html  css  js  c++  java
  • Http (GET/POST)请求


    1
    /// <summary> 2 /// Http (GET/POST) 3 /// </summary> 4 /// <param name="url">请求URL</param> 5 /// <param name="parameters">请求参数</param> 6 /// <param name="method">请求方法</param> 7 /// <returns>响应内容</returns> 8 static string sendPost(string url, IDictionary<string, string> parameters, string method) 9 { 10 if (method.ToLower() == "post") 11 { 12 HttpWebRequest req = null; 13 HttpWebResponse rsp = null; 14 System.IO.Stream reqStream = null; 15 try 16 { 17 req = (HttpWebRequest)WebRequest.Create(url); 18 req.Method = method; 19 req.KeepAlive = false; 20 req.ProtocolVersion = HttpVersion.Version10; 21 req.Timeout = 5000; 22 req.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; 23 byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8")); 24 reqStream = req.GetRequestStream(); 25 reqStream.Write(postData, 0, postData.Length); 26 rsp = (HttpWebResponse)req.GetResponse(); 27 Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet); 28 return GetResponseAsString(rsp, encoding); 29 } 30 catch (Exception ex) 31 { 32 return ex.Message; 33 } 34 finally 35 { 36 if (reqStream != null) reqStream.Close(); 37 if (rsp != null) rsp.Close(); 38 } 39 } 40 else 41 { 42 //创建请求 43 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8")); 44 45 //GET请求 46 request.Method = "GET"; 47 request.ReadWriteTimeout = 5000; 48 request.ContentType = "text/html;charset=UTF-8"; 49 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 50 Stream myResponseStream = response.GetResponseStream(); 51 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); 52 53 //返回内容 54 string retString = myStreamReader.ReadToEnd(); 55 return retString; 56 } 57 }
     1 /// <summary>
     2         /// 组装普通文本请求参数。
     3         /// </summary>
     4         /// <param name="parameters">Key-Value形式请求参数字典</param>
     5         /// <returns>URL编码后的请求数据</returns>
     6         static string BuildQuery(IDictionary<string, string> parameters, string encode)
     7         {
     8             StringBuilder postData = new StringBuilder();
     9             bool hasParam = false;
    10             IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
    11             while (dem.MoveNext())
    12             {
    13                 string name = dem.Current.Key;
    14                 string value = dem.Current.Value;
    15                 // 忽略参数名或参数值为空的参数
    16                 if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value)
    17                 {
    18                     if (hasParam)
    19                     {
    20                         postData.Append("&");
    21                     }
    22                     postData.Append(name);
    23                     postData.Append("=");
    24                     if (encode == "gb2312")
    25                     {
    26                         postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));
    27                     }
    28                     else if (encode == "utf8")
    29                     {
    30                         postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));
    31                     }
    32                     else
    33                     {
    34                         postData.Append(value);
    35                     }
    36                     hasParam = true;
    37                 }
    38             }
    39             return postData.ToString();
    40         }
     1 /// <summary>
     2         /// 把响应流转换为文本。
     3         /// </summary>
     4         /// <param name="rsp">响应流对象</param>
     5         /// <param name="encoding">编码方式</param>
     6         /// <returns>响应文本</returns>
     7         static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
     8         {
     9             System.IO.Stream stream = null;
    10             StreamReader reader = null;
    11             try
    12             {
    13                 // 以字符流的方式读取HTTP响应
    14                 stream = rsp.GetResponseStream();
    15                 reader = new StreamReader(stream, encoding);
    16                 return reader.ReadToEnd();
    17             }
    18             finally
    19             {
    20                 // 释放资源
    21                 if (reader != null) reader.Close();
    22                 if (stream != null) stream.Close();
    23                 if (rsp != null) rsp.Close();
    24             }
    25         }
  • 相关阅读:
    Google Accounts,OpenID,OAuth
    Namespaces(命名空间)
    <Araxis Merge>Windows平台下的Merge概览
    <Araxis Merge>快速一览文件的比较与合并
    <Araxis Merge>保存文件
    <Stackoverflow> 声望和节制
    <Stackoverflow> 如何提问
    收集一些好用的搜索引擎
    一个简单的scrapy爬虫抓取豆瓣刘亦菲的图片地址
    应用python编写简单新浪微博应用(一)
  • 原文地址:https://www.cnblogs.com/Julyra/p/12766336.html
Copyright © 2011-2022 走看看