C#调用WebAPI的HTTP服务

话不多说直接上代码

需要引用如下三个

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接口已经完成,小伙伴可以试一试

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值