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

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

相关文章

  • c#批量抓取免费代理并且验证有效性的实战教程

    c#批量抓取免费代理并且验证有效性的实战教程

    突破反爬虫限制的方法之一就是多用几个代理IP,下面这篇文章主要给大家介绍了关于利用c#批量抓取免费代理并且验证有效性的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • C#反射之基础应用实例总结

    C#反射之基础应用实例总结

    这篇文章主要介绍了C#反射之基础应用实例总结,包括了反射的基本原理与用法实例,需要的朋友可以参考下
    2014-10-10
  • 用 FieldMask 提高 C# gRpc 的服务性能

    用 FieldMask 提高 C# gRpc 的服务性能

    这篇文章主要介绍了用 FieldMask 提高 C# gRpc 的服务性能,FieldMask 是一个 protobuf 消息,包含一个名为 paths 的字段,用于指定用于指定读取操作返回或更新操作修改的字,下文详细内容,需要的朋友可以参考一下
    2022-03-03
  • C#实现简易计算器功能(1)(窗体应用)

    C#实现简易计算器功能(1)(窗体应用)

    这篇文章主要为大家详细介绍了C#实现简易计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 字符串替换Replace仅替换第一个字符串匹配项

    字符串替换Replace仅替换第一个字符串匹配项

    C#里面的String.Replace(string,string)方法替换的时候是替换所有的匹配项,我们需要只替换第一个匹配项,写一个方法来实现这个功能
    2013-12-12
  • C#实现简单串口通信的示例详解

    C#实现简单串口通信的示例详解

    这篇文章主要为大家详细介绍了C#实现串口通信的相关知识,文中示例代码介绍的非常详细,具有一定的学习价值,感兴趣的小伙伴们可以跟随小编一起了解一下
    2023-10-10
  • c#对list排序示例

    c#对list排序示例

    本文主要介绍了c#对List成员排序的示例,大家参考使用吧
    2014-01-01
  • 使用C#来编写一个异步的Socket服务器

    使用C#来编写一个异步的Socket服务器

    这篇文章主要介绍了使用C#来编写一个异步的Socket服务器,通过无阻塞机制来获取更高的处理效率,需要的朋友可以参考下
    2015-07-07
  • winform使用委托和事件来完成两个窗体之间通信的实例

    winform使用委托和事件来完成两个窗体之间通信的实例

    这篇文章介绍了winform使用委托和事件来完成两个窗体之间通信的实例,有需要的朋友可以参考一下
    2013-09-09
  • C# Winform 分页功能的实现

    C# Winform 分页功能的实现

    本文主要介绍了C# Winform 分页功能的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论