一、POST請求
參數 paramsValue的格式 要和 Reques.ContentType一致,
如果 contentype "application/x-www-form-urlencoded" 表單類型,那么 參數為 a=1&b=2 形式
如果 contentype "application/json" json 類型 那么參數就為 "{a:1,b:2}" 格式
1.參數類型: ContentType = "application/x-www-form-urlencoded"
(1)發起請求的方法體
注:參數是自定義實體類
public object GetPost([FromBody]RequestTest request) { return HttpHelper.HttpPostForm("http://localhost:56188/IDCardOCR/Test",request); }
(2)模擬請求封裝
首先封裝參數
public static string BuildFrom<T>(T requestFrom) { string form = string.Empty; foreach (var property in requestFrom.GetType().GetProperties()) { form += property.Name.ToLower() + "=" + property.GetValue(requestFrom).ToString() + "&"; } form = form.TrimEnd('&'); return form; }
模擬請求實體
public static object HttpPostForm(string url, RequestTest requestFrom) { string form = BuildFrom<RequestTest>(requestFrom); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; byte[] paramload = System.Text.Encoding.UTF8.GetBytes(form); request.ContentLength = paramload.Length; Stream writer = request.GetRequestStream(); writer.Write(paramload, 0, paramload.Length); writer.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream s = response.GetResponseStream(); StreamReader Reader = new StreamReader(s, Encoding.UTF8); object strValue = Reader.ReadLine(); return strValue; }
(3)此請求有兩種接收方式:(不需要參數頭部帶[FromBody]屬性)
第一種:對象接收
[HttpPost("Test")] public int Test(Cup cup) { return cup.a + cup.b; }
第二種:參數名接收
[HttpPost("Test")] public int Test(int a, int b) { return a + b; }
2.參數類型: ContentType = "application/json; charset=utf-8"
(1)發起請求的方法體(注:參數是不確定類型的object對象)
[HttpPost("GetPost")] public object GetPost([FromBody]object request) { return HttpHelper.HttpPostJson("http://localhost:56188/IDCardOCR/Test", request.ToString()); }
(2)模擬請求封裝
public static object HttpPostJson(string url, string form) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json; charset=utf-8"; byte[] paramload = System.Text.Encoding.UTF8.GetBytes(form); request.ContentLength = paramload.Length; Stream writer = request.GetRequestStream(); writer.Write(paramload, 0, paramload.Length); writer.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream s = response.GetResponseStream(); StreamReader Reader = new StreamReader(s, Encoding.UTF8); object strValue = Reader.ReadLine(); return strValue; }
(3)請求的接收方式(注:要帶有[FromBody]屬性,且接收參數是個對象)
[HttpPost("Test")] public int Test([FromBody]Cup cup) { return cup.a + cup.b; }