c#發(fā)送請求訪問外部接口的實例
更新時間:2021年01月11日 14:55:31 作者:菜鳥阿都
這篇文章主要介紹了c#發(fā)送請求訪問外部接口的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
我就廢話不多說了,大家還是直接看代碼吧~
string url = "https://cloud.soei.com.cn/smsapi/sms/verifycode"; HttpClient httpClient = new HttpClient(); httpClient.BaseAddress = new Uri(url); //表頭參數(shù) string token = "9c0025b4aae442bda5498971ec1ab219"; httpClient.DefaultRequestHeaders.Add("token", token); httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); try { using (var request = new HttpRequestMessage()) { var postBody = $"{{\"identity\":\"{identity}\",\"phoneNumber\":\"{phoneNumber}\",\"code\":\"[code]\"}}"; request.Method = HttpMethod.Post; request.Content = new StringContent(postBody, Encoding.UTF8, "application/json"); var response = await httpClient.SendAsync(request); //返回結(jié)果 var retString = await response.Content.ReadAsStringAsync(); JObject items = (JObject)JsonConvert.DeserializeObject(retString); //返回碼,成功為200 string retCode = items["code"].ToString(); 返回消息 string message = items["message"].ToString(); string data = items["data"].ToString(); JObject items_data = (JObject)JsonConvert.DeserializeObject(data); string isSuccess = items_data["isSuccess"].ToString(); string data_message = items_data["message"].ToString(); if (isSuccess == "False") { retCode = "300"; } retMessage.retCode = retCode; retMessage.message = data_message; } } catch (Exception e) { retMessage.retCode = "300"; retMessage.message = e.Message.ToString(); } return retMessage; }
public static async Task<string> PostData(string path,string serverPath,dynamic param) { try { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("Referer", string.Format("http://{0}", serverPath)); HttpResponseMessage response; using (HttpContent httpContent = new StringContent(param, Encoding.UTF8)) { httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); //client.DefaultRequestHeaders.Add("x-token", "M3Q_mQEwmn9l4Ly7fM7DxaMSdlYSSup5lfKLztF_VP97Urf"); response = await client.PostAsync(path, httpContent).ContinueWith(res => { return res; }).Result; } if (response != null && response.IsSuccessStatusCode) { return await response.Content.ReadAsStringAsync(); } else { return string.Empty; } } catch (Exception ex) { throw; } finally { } }
補充:C#后臺調(diào)用Http外網(wǎng)接口(GET, POST)
1.get方法調(diào)用接口獲取json文件內(nèi)容
public void GetFunction() { string serviceAddress = "http://222.111.999.444:8687/tttr/usercrd/12/b7e50cb45a?userid=9999"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); Response.Write(retString); }
這個太復(fù)雜了 突然發(fā)現(xiàn)個簡單的:
using (var client = new WebClient()){ client.Encoding = Encoding.UTF8; string serviceAddress = urlappend + "cloud/device/data/getErrorData?appId=" + appid + "&accessToken=" + accessToken + "×tamp=" + time + "&deviceIds=" + deviceIds; var data = client.DownloadString(serviceAddress); var obj = JsonConvert.DeserializeObject<JObject>(data); } //obj就是返回數(shù)據(jù)的對象
2.post方法調(diào)用接口獲取json文件內(nèi)容
public void PostFunction() { string serviceAddress = "http://222.111.999.444:8687/tttr/usercrd/uuu/12/dfd7e4"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress); request.Method = "POST"; request.ContentType = "application/json"; string strContent = @"{ ""mmmm"": ""89e"",""nnnnnn"": ""0101943"",""kkkkkkk"": ""e8sodijf9""}"; using (StreamWriter dataStream = new StreamWriter(request.GetRequestStream())) { dataStream.Write(strContent); dataStream.Close(); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string encoding = response.ContentEncoding; if (encoding == null || encoding.Length < 1) { encoding = "UTF-8"; //默認(rèn)編碼 } StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding)); string retString = reader.ReadToEnd(); //解析josn JObject jo = JObject.Parse(retString); Response.Write(jo["message"]["mmmm"].ToString()); }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
C#實現(xiàn)觀察者模式(Observer?Pattern)的兩種方式
這篇文章介紹了C#實現(xiàn)觀察者模式(Observer?Pattern)的兩種方式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08C# List實現(xiàn)行轉(zhuǎn)列的通用方案
本篇通過行轉(zhuǎn)列引出了System.Linq.Dynamic,并且介紹了過濾功能,具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03Unity中的PostProcessBuild實用案例深入解析
這篇文章主要為大家介紹了Unity中的PostProcessBuild實用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05C# char[]與string byte[]與string之間的轉(zhuǎn)換詳解
在本篇文章里小編給大家分享的是關(guān)于C# char[]與string byte[]與string之間的轉(zhuǎn)換的知識點內(nèi)容,需要的朋友們參考下2019-11-11