c#模擬Http請求


一、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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM