服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - c#发送请求访问外部接口的实例

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

2022-10-27 13:01菜鸟阿都 C#

这篇文章主要介绍了c#发送请求访问外部接口的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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;
 }
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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文件内容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
  }

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

?
1
2
3
4
5
6
7
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文件内容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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());  
  }

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

原文链接:https://blog.csdn.net/douzhenwen/article/details/106074712

延伸 · 阅读

精彩推荐
  • C#详解 c# 克隆

    详解 c# 克隆

    这篇文章主要介绍了详解 c# 克隆的相关资料,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...

    一只独行的猿4312022-10-17
  • C#C#连接mysql的方法【基于vs2010】

    C#连接mysql的方法【基于vs2010】

    这篇文章主要介绍了C#连接mysql的方法,基于vs2010平台较为详细的讲述了C#操作mysql所需的组件下载、安装及连接mysql操作实现代码,需要的朋友可以参考下...

    xyzqiang12152021-12-30
  • C#C#是什么

    C#是什么

    C#是什么?C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。...

    百度百科4092020-12-12
  • C#C#算法函数:获取一个字符串中的最大长度的数字

    C#算法函数:获取一个字符串中的最大长度的数字

    这篇文章介绍了使用C#获取一个字符串中最大长度的数字的实例代码,有需要的朋友可以参考一下。...

    Robin3822021-11-26
  • C#ListView用法中与滚动相关的需求实现

    ListView用法中与滚动相关的需求实现

    这篇文章主要介绍了ListView用法中与滚动相关的需求实现,获取并设置ListView的滚动位置,以及获取滚动位置处的项目,具有一定的参考价值,感兴趣的小伙...

    WPInfo8052022-01-10
  • C#C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)

    C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)

    下面小编就为大家带来一篇C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟...

    C#教程网8632021-12-23
  • C#C#实现将一个字符串进行翻转显示的6种方法

    C#实现将一个字符串进行翻转显示的6种方法

    下面小编就为大家分享一篇C#实现将一个字符串进行翻转显示的6种方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    杨明波(Leo Yang)6522022-02-16
  • C#WinForm调用百度地图接口用法示例

    WinForm调用百度地图接口用法示例

    这篇文章主要介绍了WinForm调用百度地图接口用法,结合具体实例形式简单分析了WinForm WebBrower控件与前端百度接口交互的相关操作技巧,需要的朋友可以参考...

    廖先生4952022-01-10