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

作者:菜鸟阿都 时间:2023-05-25 17:43:30 

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


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

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

来源:https://blog.csdn.net/douzhenwen/article/details/106074712

标签:c#,请求,接口
0
投稿

猜你喜欢

  • 使用C语言实现五子棋游戏

    2021-07-17 18:25:28
  • Java设计模式之原型模式详解

    2021-09-06 19:04:49
  • Java中死锁与活锁的具体实现

    2023-10-29 01:48:02
  • Java中常见的5种WEB服务器介绍

    2022-08-02 08:45:50
  • java集合继承关系图分享

    2023-04-25 17:17:23
  • Android 中使用RadioGroup和Fragment实现底部导航栏的功能

    2022-07-17 16:11:04
  • Java中自动生成构造方法详解

    2023-06-21 14:17:44
  • android 实现按钮浮动在键盘上方的实例代码

    2022-12-21 11:32:33
  • java异常与错误处理基本知识

    2023-11-25 10:44:59
  • Activity取消界面切换的默认动画方法(推荐)

    2021-05-23 12:12:52
  • Jenkins使用Gradle编译Android项目详解

    2021-12-30 22:26:30
  • Android监听键盘状态获取键盘高度的实现方法

    2023-12-02 16:44:17
  • Android编程之ListView和EditText发布帖子隐藏软键盘功能详解

    2023-11-06 23:09:55
  • Java基于注解的Excel导出方式

    2021-12-31 04:55:08
  • C#检查指定对象是否存在于ArrayList集合中的方法

    2023-07-28 00:45:17
  • 基于Android实现百度地图定位过程详解

    2021-06-12 20:55:34
  • request如何获取body的json数据

    2021-11-16 20:30:31
  • C语言字符串操作总结大全(超详细)

    2023-07-06 15:14:56
  • Spring学习通过AspectJ注解方式实现AOP操作

    2023-09-22 22:09:44
  • 优化常见的java排序算法

    2022-03-25 05:11:54
  • asp之家 软件编程 m.aspxhome.com