c#发送请求访问外部接口的实例
我就废话不多说了,大家还是直接看代码吧~
stringurl="https://cloud.soei.com.cn/smsapi/sms/verifycode"; HttpClienthttpClient=newHttpClient(); httpClient.BaseAddress=newUri(url); //表头参数 stringtoken="9c0025b4aae442bda5498971ec1ab219"; httpClient.DefaultRequestHeaders.Add("token",token); httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(newMediaTypeWithQualityHeaderValue("application/json")); try { using(varrequest=newHttpRequestMessage()) { varpostBody=$"{{\"identity\":\"{identity}\",\"phoneNumber\":\"{phoneNumber}\",\"code\":\"[code]\"}}"; request.Method=HttpMethod.Post; request.Content=newStringContent(postBody,Encoding.UTF8,"application/json"); varresponse=awaithttpClient.SendAsync(request); //返回结果 varretString=awaitresponse.Content.ReadAsStringAsync(); JObjectitems=(JObject)JsonConvert.DeserializeObject(retString); //返回码,成功为200 stringretCode=items["code"].ToString(); 返回消息 stringmessage=items["message"].ToString(); stringdata=items["data"].ToString(); JObjectitems_data=(JObject)JsonConvert.DeserializeObject(data); stringisSuccess=items_data["isSuccess"].ToString(); stringdata_message=items_data["message"].ToString(); if(isSuccess=="False") { retCode="300"; } retMessage.retCode=retCode; retMessage.message=data_message; } } catch(Exceptione) { retMessage.retCode="300"; retMessage.message=e.Message.ToString(); } returnretMessage; }
publicstaticasyncTaskPostData(stringpath,stringserverPath,dynamicparam){ try { HttpClientclient=newHttpClient(); client.DefaultRequestHeaders.Add("Referer",string.Format("http://{0}",serverPath)); HttpResponseMessageresponse; using(HttpContenthttpContent=newStringContent(param,Encoding.UTF8)) { httpContent.Headers.ContentType=newSystem.Net.Http.Headers.MediaTypeHeaderValue("application/json"); //client.DefaultRequestHeaders.Add("x-token","M3Q_mQEwmn9l4Ly7fM7DxaMSdlYSSup5lfKLztF_VP97Urf"); response=awaitclient.PostAsync(path,httpContent).ContinueWith(res=> { returnres; }).Result; } if(response!=null&&response.IsSuccessStatusCode) { returnawaitresponse.Content.ReadAsStringAsync(); } else { returnstring.Empty; } } catch(Exceptionex) { throw; } finally { } }
补充:C#后台调用Http外网接口(GET,POST)
1.get方法调用接口获取json文件内容
publicvoidGetFunction() { stringserviceAddress="http://222.111.999.444:8687/tttr/usercrd/12/b7e50cb45a?userid=9999"; HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(serviceAddress); request.Method="GET"; request.ContentType="text/html;charset=UTF-8"; HttpWebResponseresponse=(HttpWebResponse)request.GetResponse(); StreammyResponseStream=response.GetResponseStream(); StreamReadermyStreamReader=newStreamReader(myResponseStream,Encoding.UTF8); stringretString=myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); Response.Write(retString); }
这个太复杂了突然发现个简单的:
using(varclient=newWebClient()){ client.Encoding=Encoding.UTF8; stringserviceAddress=urlappend+"cloud/device/data/getErrorData?appId="+appid+"&accessToken="+accessToken+"×tamp="+time+"&deviceIds="+deviceIds; vardata=client.DownloadString(serviceAddress); varobj=JsonConvert.DeserializeObject(data); } //obj就是返回数据的对象
2.post方法调用接口获取json文件内容
publicvoidPostFunction() { stringserviceAddress="http://222.111.999.444:8687/tttr/usercrd/uuu/12/dfd7e4"; HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(serviceAddress); request.Method="POST"; request.ContentType="application/json"; stringstrContent=@"{""mmmm"":""89e"",""nnnnnn"":""0101943"",""kkkkkkk"":""e8sodijf9""}"; using(StreamWriterdataStream=newStreamWriter(request.GetRequestStream())) { dataStream.Write(strContent); dataStream.Close(); } HttpWebResponseresponse=(HttpWebResponse)request.GetResponse(); stringencoding=response.ContentEncoding; if(encoding==null||encoding.Length<1) { encoding="UTF-8";//默认编码 } StreamReaderreader=newStreamReader(response.GetResponseStream(),Encoding.GetEncoding(encoding)); stringretString=reader.ReadToEnd(); //解析josn JObjectjo=JObject.Parse(retString); Response.Write(jo["message"]["mmmm"].ToString()); }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。