C#使用Post調(diào)用接口并傳遞json參數(shù)
更新時間:2022年06月09日 09:52:17 作者:colouful_2021
這篇文章主要介紹了C#使用Post調(diào)用接口并傳遞json參數(shù),具有很好的參考價值,希望對大家有所幫助。
Post調(diào)用接口并傳遞json參數(shù)
public string Post(string Url, string jsonParas) { string strURL = Url; //創(chuàng)建一個HTTP請求 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL); //Post請求方式 request.Method = "POST"; //內(nèi)容類型 request.ContentType = "application/json"; //設(shè)置參數(shù),并進行URL編碼 string paraUrlCoded = jsonParas;//System.Web.HttpUtility.UrlEncode(jsonParas); byte[] payload; //將Json字符串轉(zhuǎn)化為字節(jié) payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded); //設(shè)置請求的ContentLength request.ContentLength = payload.Length; //發(fā)送請求,獲得請求流 Stream writer; try { writer = request.GetRequestStream();//獲取用于寫入請求數(shù)據(jù)的Stream對象 } catch (Exception) { writer = null; Console.Write("連接服務(wù)器失敗!"); } //將請求參數(shù)寫入流 writer.Write(payload, 0, payload.Length); writer.Close();//關(guān)閉請求流 // String strValue = "";//strValue為http響應(yīng)所返回的字符流 HttpWebResponse response; try { //獲得響應(yīng)流 response = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { response = ex.Response as HttpWebResponse; } Stream s = response.GetResponseStream(); // Stream postData = Request.InputStream; StreamReader sRead = new StreamReader(s); string postContent = sRead.ReadToEnd(); sRead.Close(); return postContent;//返回Json數(shù)據(jù) } //調(diào)用: string askurl = testUrl + "?sid=" + sid + "&mobi=" + mobi + "&sign=" + sign + "&msg=" + encodeMsgs; //string relust = Post(askurl, ""); // 或者 string relust = Post(askurl, sid=" + sid + "&mobi=" + mobi + "&sign=" + sign + "&msg=" + encodeMsgs);
Post請求參數(shù)(發(fā)送Json參數(shù)、發(fā)送普通參數(shù))
1.發(fā)送Json格式的Post請求
(1)Post調(diào)用
string PostUrl="http://IP:端口/AAA/BBB/CCC"; string id="123"; string Name="小黑"; ? JObject patientinfo = new JObject(); JArray ids = new JArray(); ids.Add(id); patientinfo["ids"] = ids; patientinfo["Name"] = Name; string sendData = JsonConvert.SerializeObject(patientinfo); //eg: ?發(fā)送Url需要的格式:sendData={"ids":[123],"Name":小黑} string resultData = Post(sendData, PostUrl);
(2)Post方法
#region Post請求 /// <summary> /// http Post請求 /// </summary> /// <param name="parameterData">參數(shù)</param> /// <param name="serviceUrl">訪問地址</param> /// <param name="ContentType">默認 application/json , application/x-www-form-urlencoded,multipart/form-data,raw,binary </param> /// <param name="Accept">默認application/json</param> /// <returns></returns> public string Post(string parameterData, string serviceUrl, string ContentType = "application/json", string Accept = "application/json") { //先根據(jù)用戶請求的uri構(gòu)造請求地址 //string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri); //創(chuàng)建Web訪問對象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); //把用戶傳過來的數(shù)據(jù)轉(zhuǎn)成“UTF-8”的字節(jié)流 byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData); myRequest.Method = "POST"; //myRequest.Accept = "application/json"; //myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded myRequest.AutomaticDecompression = DecompressionMethods.GZip; myRequest.Accept = Accept; //myRequest.ContentType = ContentType; myRequest.ContentType = "application/json; charset=UTF-8"; myRequest.ContentLength = buf.Length; myRequest.MaximumAutomaticRedirections = 1; myRequest.AllowAutoRedirect = true; //myRequest.Headers.Add("content-type", "application/json"); //myRequest.Headers.Add("accept-encoding", "gzip"); //myRequest.Headers.Add("accept-charset", "utf-8"); //發(fā)送請求 Stream stream = myRequest.GetRequestStream(); stream.Write(buf, 0, buf.Length); stream.Close(); //通過Web訪問對象獲取響應(yīng)內(nèi)容 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); //通過響應(yīng)內(nèi)容流創(chuàng)建StreamReader對象,因為StreamReader更高級更快 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); //string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個方法 string returnData = reader.ReadToEnd();//利用StreamReader就可以從響應(yīng)內(nèi)容從頭讀到尾 reader.Close(); myResponse.Close(); return returnData; } #endregion
2.帶參數(shù)的Post請求
(1)Post調(diào)用
string PostUrl="http://IP:端口/AAA/BBB/CCC"; Dictionary<string, string> dic=new Dictionary<string, string>(); dic.Add("Id","123"); dic.Add("Name","笑笑"); string resultData = Post(dic, PostUrl);
(2)Post方法
#region post帶參數(shù)的請求 /// <summary> /// 指定Post地址使用Get 方式獲取全部字符串 /// Post是從服務(wù)器上傳送數(shù)據(jù) /// </summary> /// <param name="url">請求Url地址</param> /// <param name="dic">拼接Url的字段</param> /// <returns></returns> public static string Post(string url, Dictionary<string, string> dic) { #region 【網(wǎng)上查的】 //eg:http://IP:端口/AAA/BBB/CCC//發(fā)送對應(yīng)參數(shù) #region 創(chuàng)建Web訪問對象 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); //req.Method = "POST"; //req.ContentType = "application/x-www-form-urlencoded"; req.Method = "POST"; req.AutomaticDecompression = DecompressionMethods.GZip; req.ContentType = "application/json; charset=UTF-8"; #endregion #region Post添加并拼接參數(shù),形成對應(yīng)Url地址 StringBuilder builder = new StringBuilder(); int i = 0; if (dic.Count > 0) { foreach (var item in dic) { if (i > 0) builder.Append("&"); builder.AppendFormat("{0}={1}", item.Key, item.Value); i++; } } #endregion #region 發(fā)送請求 byte[] data = Encoding.UTF8.GetBytes(builder.ToString()); req.ContentLength = data.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } #endregion #region 通過Web訪問對象獲取響應(yīng)內(nèi)容 string result = ""; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //獲取響應(yīng)內(nèi)容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; #endregion #endregion } #endregion
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#關(guān)于Textbox滾動顯示最后一行,不閃爍問題
這篇文章主要介紹了C#關(guān)于Textbox滾動顯示最后一行,不閃爍問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04c#使用filesystemwatcher監(jiān)視文件系統(tǒng)的變化
對于一個文件夾的改變,C#這邊有自己的類來實現(xiàn),我們不需要關(guān)心它的內(nèi)部實現(xiàn)機制,不需要關(guān)心它底層調(diào)用哪些API,我們只需要關(guān)心如何去調(diào)用它,如何讓它幫助我們記錄文件夾的修改情況即可,下面我們就實現(xiàn)它2014-01-01