在做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; }
