原文地址: 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的方式提交即可,代码如下:
-
-
-
public string POST(string url, Dictionary param)
-
{
-
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
-
CookieContainer cookieContainer = new CookieContainer();
-
request.CookieContainer = cookieContainer;
-
request.AllowAutoRedirect = true;
-
-
request.MaximumResponseHeadersLength = 1024;
-
request.Method = "POST";
-
request.AllowAutoRedirect = true;
-
request.MaximumResponseHeadersLength = 1024;
-
request.ContentType = "application/json";
-
JObject json = new JObject();
-
if(param.Count!=0)
-
{
-
foreach(var item in param)
-
{
-
json.Add(item.Key, item.Value);
-
}
-
}
-
string jsonstring = json.ToString();
-
byte[] jsonbyte = Encoding.UTF8.GetBytes(jsonstring);
-
Stream postStream = request.GetRequestStream();
-
postStream.Write(jsonbyte, 0, jsonbyte.Length);
-
postStream.Close();
-
-
HttpWebResponse res;
-
try
-
{
-
res = (HttpWebResponse)request.GetResponse();
-
}
-
catch (WebException ex)
-
{
-
res = (HttpWebResponse)ex.Response;
-
}
-
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
-
string content = sr.ReadToEnd();
-
return content;
-
}