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