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());
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。