.Net调用第三方系统接口


using Abp.Organizations;
using MongoDB.Bson;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace BM.ERP.Sys.Organizationdetails.Dto
{
    /// <summary>
    /// 调动OA组织架构
    /// </summary>
    public class OrganizationalStructureServices : ERPDomainServiceBase
    {
        string OAorganizationStructureUrl = "http://域名/SendAPI2/SendDataPort";          //路径+接口名称

        //string OAorganizationStructureUr2 = "http://IP地 址/SendAPI2/SendDataPort";
        
        public List<OrganizationStructureDto> GetJobDataGonGuan()
        {
            var json = GetPostData(OAorganizationStructureUrl);
            var datas = JsonConvert.DeserializeObject<OrganizationStructureDto>(json);          //OrganizationStructureDto 第三方接口返回数据的接收类
            var data = datas.Data;
            return data;
        }

        #region 通用
        /// <summary>
        /// 获取接口数据方法
        /// </summary>
        /// <param name="Url"></param>
        /// <returns></returns>
        public string GetPostData(string Url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Method = "POST";     //GetRequestStream() 请求方式必须为Post否则导致异常
            request.ContentType = "application/json";
            string appid = "2";
            var time = DateTime.Now.ToString();
            var sign = GetCkeckKey(appid, time);
             //接口参数
            var result = new OAInterfaceParameters
            {
                appid = appid,
                time = time,
                sign = sign,
            };
            var results = result.ToJson();

            byte[] data = Encoding.UTF8.GetBytes(results);
            request.ContentLength = data.Length;

            Stream writer;
            try
            {
                writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
            }
            catch (System.Exception e)
            {
                writer = null;
                Console.Write("连接服务器失败:" + e.Message);
            }
            //将请求参数写入流
            writer.Write(data, 0, data.Length);
            writer.Close();//关闭请求流
                           // String strValue = "";//strValue为http响应所返回的字符流
            HttpWebResponse response;
            try
            {
                //获得响应流
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = ex.Response as HttpWebResponse;
            }
            Stream s = response.GetResponseStream();
            //  Stream postData = Request.InputStream;
            StreamReader sRead = new StreamReader(s);
            string postContent = sRead.ReadToEnd();
            sRead.Close();
            return postContent;//返回Json数据
        }


       //检测用户Key和加密算法接口是第三方系统需要验证的,把第三方的验证代码复制过来验证下就好;如果不需要  这两个回调可以忽略
        /// <summary>
        ///检测用户key 
        /// </summary>
        /// <param name="appid">appid,由开发商提供</param>
        /// <param name="time">时间</param>
        /// <returns></returns>
        private string GetCkeckKey(string appid, string time)
        {
            //验证
            var appsecret = "bmlrdept01";

            var _sign = md5_ex(appsecret + time + appid);//大写32位
            return _sign;

        }
        /// <summary>
        /// 加密算法
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private static string md5_ex(string str)
        {
            MD5 md5Hasher = MD5.Create();
            byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(str));
            StringBuilder sBuilder = new StringBuilder();

            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }

            Console.WriteLine(sBuilder);
            return sBuilder.ToString();
        }
        #endregion
    }
}





  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用C#语言和ASP.NET框架来调用第三方接口。以下是调用第三方接口的基本步骤: 1. 导入相关的命名空间和程序集。 2. 创建一个WebRequest对象,并设置请求的地址、方法、参数等信息。 3. 发送请求并获取响应数据。 4. 处理响应数据,提取所需的信息。 例如,如果要调用一个天气预报的第三方接口,可以按照以下步骤来实现: 1. 导入相关命名空间和程序集: ``` using System; using System.Net; using System.IO; using System.Text; using System.Web.Script.Serialization; ``` 2. 创建一个WebRequest对象,并设置请求的地址和方法: ``` string url = "http://api.weather.com/weather"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; ``` 3. 设置请求参数: ``` string postData = "city=beijing&date=2021-07-01&key=your_api_key"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); ``` 4. 发送请求并获取响应数据: ``` HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); string responseJson = reader.ReadToEnd(); reader.Close(); responseStream.Close(); response.Close(); ``` 5. 解析响应数据,提取所需的信息: ``` JavaScriptSerializer serializer = new JavaScriptSerializer(); dynamic result = serializer.Deserialize(responseJson, typeof(object)); string weather = result["weather"]["condition"]; ``` 以上是一个基本的调用第三方接口的示例,实际应用中可能需要根据具体的接口来设置请求参数和解析响应数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值