C#调用WebAPI的HTTP服务

    技术2022-07-12  71

    话不多说直接上代码

    需要引用如下三个

    using System.Net; using Newtonsoft.Json; using Newtonsoft.Json.Linq;

    一般调用WEBAPI的JSON字符串如下

    { "UserId":"admin","UserName":"admin", "Token":"Token", "RequestName":"functionName", "JsonData":"[{'Task1':test1,'Task2':'test2','Flag':0},{'Task1':'2020','Task2':'2019','Flag':1}]", "ClientIP":null }

     JSONData里面的一定要是单引号,目前C#测试是这样的,但是用C#试调过程中监视器里看到的都是双引号+斜杠,拷出来是不能用的

    调用过程主要如下方式【POST调用方式】

    /// <summary> /// 调用WEBAPI /// </summary> /// <param name="UserId"></param> /// <param name="UserName"></param> /// <param name="Token">可以验证</param> /// <param name="RequestName">方法名称</param> /// <param name="JsonData">JSON字符串或JSON数组</param> /// <returns></returns> public string GetWebApi(string UserId, string UserName, string Token, string RequestName, string JsonData) { string Url = "http://192.168.1.2/api/控制器名/调用函数名"; string s1 = "UserId=" + UserId + "&UserName=" + UserName + "&Token=" + Token + "&RequestName=" + RequestName + "&JsonData=" + JsonData + "&ClientIP=''"; string s2 = ""; try { byte[] pds = Encoding.UTF8.GetBytes(s1); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; request.ContentLength = pds.Length; Stream writer = request.GetRequestStream(); writer.Write(pds, 0, pds.Length); writer.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream s = response.GetResponseStream(); StreamReader reader = new StreamReader(s); s2 = reader.ReadToEnd(); s.Close(); } catch (Exception e) { s2 = e.Message; } return s2; }

     调用如下:

    string jkReturn = fu.GetWebApi(UsrId, UsrName, "Token", "functionName", json); /*调用返回 { "Success": 1, "Message": "成功 共2记录", "Result": null } 这里的JSON自己按照规则拼凑就可以了 */ JObject jo = (JObject)JsonConvert.DeserializeObject(jkReturn); bool success = (bool)jo["Success"]; if (!success) { Exception ex = new Exception("XXX信息有误:" + jkReturn); throw ex; } 返回执行结果

    {

        "Success": 1,

        "Message": "成功同步2条记录!",

    }

     

    返回结果说明

    字段名

    数据类型

    允许空

    注释

    Success

    int

    0:异常 1:正常

    Message

    string

    执行结果消息

    当然大部分都还有一个Result字符对,也是可以的,那样更规范吧

     

    至此C#调用WEBAPI接口已经完成,小伙伴可以试一试

    Processed: 0.020, SQL: 9