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

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

(0)

相关推荐

  • C#支付宝新版支付请求接口调用

    本文实例为大家分享了C#支付宝新版支付请求接口调用的具体代码,供大家参考,具体内容如下 因为支付宝已经集成了完整的SDK,所以可以使用SDK直接调用API,这里获取SDK源码. 首先我们需要引用支付宝SDK集成 AopSdk.dll. 添加相关引用: using Aop.Api; using Aop.Api.Domain; using Aop.Api.Request; using Aop.Api.Response; 需要用到商户私钥,支付宝公钥,请求地址等公共参数,所以可以新建一个config文

  • C# 如何使用ajax请求

    ajax简介 Ajax 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML),是指一种创建交互式.快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. C#如何使用ajax 1.首先下载ajax.dll,一个百度一下都有下载的!自行查找. 2.把ajax.dl

  • C# 使用Fiddler捕获本地HttpClient发出的请求操作

    示例接口定义 为了方便笔者先自己写了个简单的接口用于展示,返回当前时间,具体如下 /// <summary> /// GetToday. /// </summary> /// <returns></returns> [HttpGet] [Route("GetTime/Today")] public MyDateTime GetToday() { var now = DateTime.Now; return new MyDateTime {

  • C#处理和对接HTTP接口请求的方法

    对于现在接口泛滥的时代,了解和处理接口对于一名程序员来说是很有必要的! 在对接时对于对方发过来的文档,需要认真看一遍,有疑问的比如加密等,需特别提出来和对方交接: 第一步,在对接接口时,你应该拿到服务端那边的key和partner,相当于用户和密码的意思:在配置文件里面配置好,如下图: 第二步,加密生成sign,一般是把加密特别抽出来作为一个方法,注意的是,需按照服务端指定的加密方式进行加密,至于是MD5还是其他加密,按规则来:例如: 第三步,拼接url,带上请求参数中间用&间隔,这个太简单了,

  • C# 使用HttpClient模拟请求的案例

    情景描述 将一个时间转换为对应的unix时间戳, 字符集使用UTF-8编码,数据通讯统一采用 HTTP 协议通讯,使用POST 方法请求并传递参数. POST请求Content-Type 设置为application/x-www-form-urlencoded 除此之外,我们对请求添加签名的校验,key设置为X-Sign 接口定义 /// <summary> /// 获取时间戳(毫秒). /// </summary> /// <param name="dateTim

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

    我就废话不多说了,大家还是直接看代码吧~ string url = "https://cloud.soei.com.cn/smsapi/sms/verifycode"; HttpClient httpClient = new HttpClient(); httpClient.BaseAddress = new Uri(url); //表头参数 string token = "9c0025b4aae442bda5498971ec1ab219"; httpClient.

  • requests在python中发送请求的实例讲解

    当我们想给服务器发送一些请求时,可以选择requests库来实现.相较于其它库而言,这种库的使用还是非常适合新手使用的.本篇要讲的是requests.get请求方法,这里需要先对get请求时的一些参数进行学习,在掌握了基本的用法后,可以就下面的requests.get请求实例进一步的探究. 1.get请求的部分参数 (1) url(请求的url地址,必需 ) import requests url="http://www.baidu.com" resp=requests.get(url

  • Android HTTP发送请求和接收响应的实例代码

    添加权限 首先要在manifest中加上访问网络的权限: 复制代码 代码如下: <manifest ... > <uses-permission android:name="android.permission.INTERNET" /> ... </manifest> 完整的Manifest文件如下: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?>

  • java以json格式向后台服务器接口发送请求的实例

    代码如下: import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import net.sf.json.JSONObject; public class InterfaceRequest {

  • Python3爬虫发送请求的知识点实例

    使用urllib的request模块,我们可以方便地实现请求的发送并得到响应,本节就来看下它的具体用法. 1. urlopen() urllib.request模块提供了最基本的构造HTTP请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理授权验证(authenticaton).重定向(redirection).浏览器Cookies以及其他内容. 下面我们来看一下它的强大之处.这里以Python官网为例,我们来把这个网页抓下来: import urllib.request re

  • RestTemplate发送get和post请求,下载文件的实例

    下图是我的所有测试接口,包含两个表单提交接口和一个Rest接口: 我是用的Http请求工具是Spring自带的RestTemplate. 请求的方法如下: 三个请求分别对应三个接口,在此记录下. 下载文件,获取文件字节流: RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); ResponseEntity<byte[]> entity = restTemplate.exc

  • 使用C#发送Http请求实现模拟登陆实例

    模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到cookie即可实现模拟登陆,比如一些抢票软件的原理无非也是这样模拟客户端的cookie 然后发送请求去抢票,然后12306 本文将演示如何用C# 来实现模拟登陆的,推荐一款工具Fiddler,这是一款监听http 请求的利器.废话不多说,我就以博客园为例来实现模拟登陆.首先我登陆博客园 http://passport.cnblogs.com/login.aspx 输入用户名和密码点登陆 就会看到Fiddler 上的

  • php curl发送请求实例方法

    cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代理

  • Vue使用axios发送请求简单实现代码

    上一篇文章我们在vue工程项目中引入了axios库并将通用的API进行了封装,但是遇到了一个问题就是我们在组件内部写的函数发送请求是不会被vue实例进行执行的,也就是说VC中的函数无法直接的由VM去接管执行,这时我们需要将这个请求的执行函数位置调到APP这个父组件上去,因为只有APP组件被所谓的VM给接管了的,其他的组件都是APP组件的子组件. 例:当我们在APP组件的子组件UserLogin组件中写到登录函数: login(){ console.log('登录') let params = {

  • Spring-Boot 访问外部接口的方案总结

    目录 一.简介 二.Spring-Boot项目中访问外部接口 2.1 方案一 采用原生的Http请求 2.2 方案二 采用Feign进行消费 2.3.方案三 采用RestTemplate方法 参考文献 一.简介 在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求,针对这一需求目前存在着三种解决方案,下面将对这三种方案进行整理和说明. 二.Spring-Boot项目中访问外部接口 2.1 方案一 采用原生的Http请求 在代码中采用原生的http请求

随机推荐