C# HttpWebRequest傳遞參數多種方式混合使用


     在做CS調用第三方接口的時候遇到了這樣的一個問題,通過PSOTman調試需要分別在parmas、Headers、Body里面同時傳遞參數。在網上查詢了很多資料,以此來記錄一下開發脫坑歷程。

POSTman調試界面:params參數

POSTman調試界面:Headers參數

 

POSTman調試界面:Body參數

 

在postman調試里面可以這么傳遞參數,那么在后台調用的時候我們改如何寫呢。

經過查閱資料得知。params參數可以直接跟在請求的URL地址后面,Headers參數通過request.Headers.Add()方法添加,Body里面需要傳遞的格式為JSON直接通過JsonConvert.SerializeObject()將對象序列化,將request.ContentType = "application/json",特別注意的是ContentType不能通過request.Headers.Add()方法添加。

 public static string getReportsContent(string param, string url, string RandomCode, string Authorization)
        {
            byte[] bytes = null;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            //獲取請求的方式

            request.Method = "post";
            request.ContentType = "application/json";
            request.Headers.Add("RandomCode", RandomCode);
            request.Headers.Add("Authorization", Authorization);
            bytes = Encoding.UTF8.GetBytes(param);
            request.ContentLength = bytes.Length;
            Stream strStream = request.GetRequestStream();
            strStream.Write(bytes, 0, bytes.Length);
            strStream.Close();
            //獲取設置身份認證及請求超時時間
            SetWebRequest(request);
            //就收應答
            HttpWebResponse httpResponse = (HttpWebResponse)request.GetResponse();
            Stream strStream1 = null;
            strStream1 = httpResponse.GetResponseStream();
            string responseContent = new StreamReader(strStream1, Encoding.UTF8).ReadToEnd();
            return responseContent;
        }
 

 

獲取設置身份認證及請求超時時間
private static void SetWebRequest(HttpWebRequest request)
{
request.Credentials = CredentialCache.DefaultCredentials;
request.Timeout = 1000000;

}


免責聲明!

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



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