C# 调接口

上一个项目,需要mvc管理后台调接口项目,以便后期的重构扩展,调研后发现后台用的ajax请求,直接调接口可能会有跨域问题,最终在c#代码中实现了这个需求。

1,Ajax请求后台 将接口所需参数传入

2,模拟请求接口并返回json格式数据

 

3,将json数据反序列化

整体代码如下:

        public ActionResult Test(int id, int type)
        {
            var domain = CommonConst.ApiDomain;
            var fixedString = CommonConst.FixedString;
            var thisTimeValue = ((long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds).ToString();
            var tempList = new List<string>() { fixedString.ToLower(), thisTimeValue.ToLower(), "GetTestData".ToLower() };
            tempList.Sort();
            var valueSign = Encrypt.MD5(string.Join("", tempList));
            valueSign = valueSign.ToLower().Replace("-", "");

            string serviceAddress = domain + "/api/exam/GetTestData?id=" + id + "&type=" + type;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);
            request.Method = CommonConst.RequestMethod;
            request.ContentType = CommonConst.ContentType;
            request.Headers.Add("SignsValue", valueSign);
            request.Headers.Add("TimeStamp", thisTimeValue.ToLower());
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
            string retString = streamReader.ReadToEnd();
            streamReader.Close();
            responseStream.Close();
            var result = JsonConvert.DeserializeObject<TestViewModel.RootObject>(retString);

其中 1. SignsValue 和 TimeStamp 等请求头信息需要通过接口的具体规则来实现

   2.在反序列化的时候需要定义类来将接受到的json格式数据转化为model 即:JsonConvert.DeserializeObject<TestViewModel.RootObject>(retString);

定义 RootObject 类:

        public class RootObject
        {
            public string Msg { get; set; }
            public string Message { get; set; }
            public string ResultCode { get; set; }
            public Info Info { get; set; }
        }

Info 中的数据接口要跟接口的数据结构一致。

GetTestData

转载于:https://www.cnblogs.com/teng-0802/p/10337358.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值