详解C#发送带参数 Get、Post请求

 

Get请求

1.简单发送Get请求

/// <summary>
/// 指定Url地址使用Get 方式获取全部字符串
/// </summary>
/// <param name="url">请求链接地址</param>
/// <returns></returns>
public static string Get(string url)
{
  string result = "";
  HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
  HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  Stream stream = resp.GetResponseStream();
  try
  {
      //获取内容
      using (StreamReader reader = new StreamReader(stream))
      {
          result = reader.ReadToEnd();
      }
  }
  finally
  {
      stream.Close();
  }
  return result;
}

2.带请求参数的Get方法

/// <summary>
/// 发送Get请求
/// </summary>
/// <param name="url">地址</param>
/// <param name="dic">请求参数定义</param>
/// <returns></returns>
public static string Get(string url, Dictionary<string, string> dic)
{
  string result = "";
  StringBuilder builder = new StringBuilder();
  builder.Append(url);
  if (dic.Count > 0)
  {
      builder.Append("?");
      int i = 0;
      foreach (var item in dic)
      {
          if (i > 0)
              builder.Append("&");
          builder.AppendFormat("{0}={1}", item.Key, item.Value);
          i++;
      }
  }
  HttpWebRequest req = (HttpWebRequest)WebRequest.Create(builder.ToString());
  //添加参数
  HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  Stream stream = resp.GetResponseStream();
  try
  {
      //获取内容
      using (StreamReader reader = new StreamReader(stream))
      {
          result = reader.ReadToEnd();
      }
  }
  finally
  {
      stream.Close();
  }
  return result;
}

3.自定义指定Http请求头,自定义指定编码解析返回结果

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.Headers["Accept-Language"] = "zh-CN,zh;q=0.8";
req.Referer = "https://www.baidu.com/";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
string result = "";
//注意,此处使用的编码是:gb2312
//using (StreamReader reader = new StreamReader(stream, Encoding.Default))
using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("gb2312")))
{
  result = reader.ReadToEnd();
}

 

Post请求

此处内容传输都是用UTF-8编码

1.不带参数发送Post请求

      /// <summary>
      /// 指定Post地址使用Get 方式获取全部字符串
      /// </summary>
      /// <param name="url">请求后台地址</param>
      /// <returns></returns>
      public static string Post(string url)
      {
          string result = "";
          HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
          req.Method = "POST";
          HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
          Stream stream = resp.GetResponseStream();
          //获取内容
          using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
          {
              result = reader.ReadToEnd();
          }
          return result;
      }

2.带参数Post请求,指定键值对

      /// <summary>
      /// 指定Post地址使用Get 方式获取全部字符串
      /// </summary>
      /// <param name="url">请求后台地址</param>
      /// <returns></returns>
      public static string Post(string url,Dictionary<string,string> dic)
      {
          string result = "";
          HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
          req.Method = "POST";
          req.ContentType = "application/x-www-form-urlencoded";
          #region 添加Post 参数
          StringBuilder builder = new StringBuilder();
          int i = 0;
          foreach (var item in dic)
          {
              if (i > 0)
                  builder.Append("&");
              builder.AppendFormat("{0}={1}", item.Key, item.Value);
              i++;
          }
          byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
          req.ContentLength = data.Length;
          using (Stream reqStream = req.GetRequestStream())
          {
              reqStream.Write(data, 0, data.Length);
              reqStream.Close();
          }
          #endregion
          HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
          Stream stream = resp.GetResponseStream();
          //获取响应内容
          using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
          {
              result = reader.ReadToEnd();
          }
          return result;
      }

3.带参数的Post请求,指定发送字符串内容

/// <summary>
/// 指定Post地址使用Get 方式获取全部字符串
/// </summary>
/// <param name="url">请求后台地址</param>
/// <param name="content">Post提交数据内容(utf-8编码的)</param>
/// <returns></returns>
public static string Post(string url, string content)
{
  string result = "";
  HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
  req.Method = "POST";
  req.ContentType = "application/x-www-form-urlencoded";

  #region 添加Post 参数
  byte[] data = Encoding.UTF8.GetBytes(content);
  req.ContentLength = data.Length;
  using (Stream reqStream = req.GetRequestStream())
  {
      reqStream.Write(data, 0, data.Length);
      reqStream.Close();
  }
  #endregion

  HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  Stream stream = resp.GetResponseStream();
  //获取响应内容
  using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
  {
      result = reader.ReadToEnd();
  }
  return result;
}

转载方法:

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://fanyi.baidu.com/transcontent");
          Encoding encoding = Encoding.UTF8;
          string param = "ie=utf-8&source=txt&query=hello&t=1327829764203&token=8a7dcbacb3ed72cad9f3fb079809a127&from=auto&to=auto";
          //encoding.GetBytes(postData);
          byte[] bs = Encoding.ASCII.GetBytes(param);
          string responseData = String.Empty;            
          req.Method = "POST";
          req.ContentType = "application/x-www-form-urlencoded";
          req.ContentLength = bs.Length;
          using (Stream reqStream = req.GetRequestStream())
          {
              reqStream.Write(bs, 0, bs.Length);
              reqStream.Close();
          }
          using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
          {
              using (StreamReader reader = new StreamReader(response.GetResponseStream(),encoding))
              {
                  responseData = reader.ReadToEnd().ToString();
              }
              context.Response.Write(responseData);
          }

关于C#发送Get、Post请求(带参数)的文章就介绍至此,更多相关C#发送Get、Post请求内容请搜索编程宝库以前的文章,希望大家多多支持编程宝库

学过编程的人都知道有个名词叫" O O P 思 想 " ―― {"面向对象编程"} " 面 向 对 象 编 程 " (Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。O ...