zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    第一次作业
    第五次作业
    第三次作业
    第六次作业
    第二次作业
    scikitlearn学习 决策树
    [阅读]Think Python CH3 Functions
    [阅读]Think Python CH2 Variables, Expressions, and Statements
    [阅读]Think Python CH1 The Way of the Program
    Hive操作符和函数
  • 原文地址:https://www.cnblogs.com/teng-0802/p/10337358.html
Copyright © 2011-2022 走看看