脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页软件编程C#教程→ c#发送请求访问接口

c#发送请求访问外部接口的实例

  更新时间:2021年01月11日 14:55:31  作者:菜鸟阿都 
这篇文章主要介绍了c#发送请求访问外部接口的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧~

 string url = "https://cloud.soei.com.cn/smsapi/sms/verifycode";
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(url);
//表头参数
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);
//返回结果
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#后台调用Http外网接口(GET, POST)

1.get方法调用接口获取json文件内容

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);
}

这个太复杂了 突然发现个简单的:

using (var client = new WebClient()){
client.Encoding = Encoding.UTF8;
string serviceAddress = urlappend + "cloud/device/data/getErrorData?appId=" + appid + "&accessToken=" + accessToken + "&timestamp=" + time + "&deviceIds=" + deviceIds;
var data = client.DownloadString(serviceAddress);
var obj = JsonConvert.DeserializeObject<JObject>(data);
}
//obj就是返回数据的对象

2.post方法调用接口获取json文件内容

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"; //默认编码
}
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());
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

    • DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。本文将用C#语言实现DES算法,文中的示例代码讲解详细,感兴趣的可以了解一下
      2022-08-08
    • 下面小编就为大家分享一篇JWT.net 操作实践方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
      2017-12-12
    • 这篇文章介绍了C# Bitmap 复制的小例子,有需要的朋友可以参考一下
      2013-10-10
    • form-data 请求和 x-www-form-urlencoded 请求是两种常见的 HTTP 请求体格式,这篇文章主要为大家详细介绍了二者的区别与应用,希望对大家有所帮助
      2023-08-08
    • 在做“亦歌桌面版”的时候,发现当打开歌词状态下,用最小化隐藏窗体到托盘的话(如下code #1),在调出发现歌词缩小了(虽然显现的窗体大小跟刚才一样),从这点看调用该方法其实窗体大小是改变了的(这个过程只是不可视而已)。
      2009-02-02
    • 本篇文章是关于C#中连续赋值的面试题介绍,需要的朋友参考下
      2013-05-05
    • 这篇文章主要介绍了C#操作注册表的方法,结合实例形式较为详细的分析了C#针对注册表的创建、打开、读取、写入、修改、删除等技巧,需要的朋友可以参考下
      2015-12-12
    • 这篇文章主要介绍了C#递归题目实例代码,有需要的朋友可以参考一下
      2014-01-01
    • 这篇文章主要为大家详细介绍了C#合并多种格式文件为PDF的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2018-01-01
    • 这篇文章主要介绍了C#逐行分元素读取记事本数据并写入数据库的方法,通过StreamReader类里的ReadLine()方法实现逐行读取的功能,是非常实用的技巧,需要的朋友可以参考下
      2014-12-12

    最新评论