C#客户端发送Http请求与服务端通信


原文地址: https://blog.csdn.net/Sayesan/article/details/78794081?spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-2~default~OPENSEARCH~default-3.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-2~default~OPENSEARCH~default-3.nonecase

C#客户端发送Http请求与服务端通信

http://blog.csdn.net/pinebud55/article/details/52182217)

http://blog.csdn.net/pinebud55/article/details/52182217)

3.POST(PUT)请求,服务端接收参数方式为@RequestBody

对于post请求,除非上传文件的特殊情况,否则我们推荐服务端以requestbody形式接收参数,因为在需要接受的参数较多时,代码可以更加简洁,并且不再需要后期增加接收的参数,body即包含了一个对象所有的属性。

言归正传,这种情况的处理是最理想的,只需要将需要提交的参数以json的方式提交即可,代码如下:

  1.   //url为请求的网址,param为需要传递的参数
  2.   //返回服务端的额响应
  3.   public string POST(string url, Dictionary param)
  4.   {
  5.   HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; //创建请求
  6.   CookieContainer cookieContainer = new CookieContainer();
  7.   request.CookieContainer = cookieContainer;
  8.   request.AllowAutoRedirect = true;
  9.   //request.AllowReadStreamBuffering = true;
  10.   request.MaximumResponseHeadersLength = 1024;
  11.   request.Method = "POST"; //请求方式为post
  12.   request.AllowAutoRedirect = true;
  13.   request.MaximumResponseHeadersLength = 1024;
  14.   request.ContentType = "application/json";
  15.   JObject json = new JObject();
  16.   if(param.Count!=0) //将参数添加到json对象中
  17.   {
  18.   foreach(var item in param)
  19.   {
  20.   json.Add(item.Key, item.Value);
  21.   }
  22.   }
  23.   string jsonstring = json.ToString();//获得参数的json字符串
  24.   byte[] jsonbyte = Encoding.UTF8.GetBytes(jsonstring);
  25.   Stream postStream = request.GetRequestStream();
  26.   postStream.Write(jsonbyte, 0, jsonbyte.Length);
  27.   postStream.Close();
  28.   //发送请求并获取相应回应数据
  29.   HttpWebResponse res;
  30.   try
  31.   {
  32.   res = (HttpWebResponse)request.GetResponse();
  33.   }
  34.   catch (WebException ex)
  35.   {
  36.   res = (HttpWebResponse)ex.Response;
  37.   }
  38.   StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
  39.   string content = sr.ReadToEnd(); //获得响应字符串
  40.   return content;
  41.   }