话不多说直接上代码
需要引用如下三个
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接口已经完成,小伙伴可以试一试