什么是 HTTP ?
超文本传输协议 (HTTP) 的设计目的是保证客户端与服务器之间的通信.
HTTP 的工作方式是客户端与服务器之间的请求 - 应答协议.
web 浏览器可能是客户端, 而计算机上的网络应用程序也可能作为服务器端.
举例: 客户端 (浏览器) 向服务器提交 HTTP 请求; 服务器向客户端返回响应. 响应包含关于请求的状态信息以及可能被请求的内容.
两种最常用的 HTTP 方法是: GET 和 POST.
GET - 从指定的资源请求数据.
POST - 向指定的资源提交要被处理的数据.
一. GET 请求
参数是通过 Url 来传输, 接在 Url 后面中间用? 分开, 不同参数之间用 & 分开, 也可不带参数, 直接从服务器拉取数据.
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
- string result = String.Empty;
- string url = $"http://localhost:52307/API/CommonAPI/GetTest1?param1={100}¶m2={200}";
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = "GET";
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream stream = response.GetResponseStream();
- if (stream != null)
- {
- using (StreamReader reader = new StreamReader(stream, Encoding.Default))
- {
- result = reader.ReadToEnd();
- reader.Close();
- }
- }
- Console.WriteLine($"result={result}");
- Console.ReadKey();
- View Code
一. POST 请求
请注意, 查询字符串 (名称 / 值对) 是在 POST 请求的 HTTP 消息主体中发送的.
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
1. ContentType = "application/x-www-form-urlencoded"
- string result = String.Empty;
- string data = $"param1={100}¶m2={200}";
- byte[] bytes = Encoding.Default.GetBytes(data);
- string url = $"http://localhost:52307/API/CommonAPI/PostTest2";
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = "POST";
- request.ContentType = "application/x-www-form-urlencoded";
- request.ContentLength = bytes.Length;
- Stream requestStream = request.GetRequestStream();
- requestStream.Write(bytes, 0, bytes.Length);
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream responseStream = response.GetResponseStream();
- if (responseStream != null)
- {
- using (StreamReader reader = new StreamReader(responseStream, Encoding.Default))
- {
- result = reader.ReadToEnd();
- reader.Close();
- }
- }
- Console.WriteLine($"result={result}");
- Console.ReadKey();
- View Code
WebApi 获取请求参数:
方法 1.
- try
- {
- HttpContextBase httpContextBase = (HttpContextBase)Request.Properties["MS_HttpContext"];
- HttpRequestBase httpRequestBase = httpContextBase.Request;
- string param1 = httpRequestBase.Form["param1"];
- string param2 = httpRequestBase.Form["param2"];
- PrintLog.WriteLog(LogType.DEBUG, "CommonAPIController", "PostTest2", $"param1={param1},param2={param2}");
- return JsonConvert.SerializeObject(new { param1, param2 });
- }
- catch (Exception)
- {
- throw;
- }
- View Code
方法 2.
- public string PostTest1([FromBody]AClass p)
- {
- try
- {
- PrintLog.WriteLog(LogType.DEBUG, "CommonAPIController", "PostTest1", $"param1={p.Param1},param2={p.Param2}");
- return JsonConvert.SerializeObject(new { p.Param1, p.Param2 });
- }
- catch (Exception)
- {
- throw;
- }
- }
- public class AClass
- {
- public string Param1 { get; set; }
- public string Param2 { get; set; }
- }
- View Code
- 2. ContentType = "application/json"
- string result = String.Empty;
- string data = "{\"param1\":100,\"param2\":200}";
- byte[] bytes = Encoding.Default.GetBytes(data);
- string url = $"http://localhost:52307/API/CommonAPI/PostTest1";
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = "POST";
- request.ContentType = "application/json";
- request.ContentLength = bytes.Length;
- Stream requestStream = request.GetRequestStream();
- requestStream.Write(bytes, 0, bytes.Length);
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream responseStream = response.GetResponseStream();
- if (responseStream != null)
- {
- using (StreamReader reader = new StreamReader(responseStream, Encoding.Default))
- {
- result = reader.ReadToEnd();
- reader.Close();
- }
- }
- Console.WriteLine($"result={result}");
- Console.ReadKey();
- View Code
WebApi 获取请求参数:
方法 1.
- [HttpPost]
- public string PostTest1([FromBody]AClass p)
- {
- try
- {
- PrintLog.WriteLog(LogType.DEBUG, "CommonAPIController", "PostTest1", $"param1={p.Param1},param2={p.Param2}");
- return JsonConvert.SerializeObject(new { p.Param1, p.Param2 });
- }
- catch (Exception)
- {
- throw;
- }
- }
- public class AClass
- {
- public string Param1 { get; set; }
- public string Param2 { get; set; }
- }
- View Code
来源: http://www.bubuko.com/infodetail-3358534.html