服务端调用另一个netcore webapi服务的实现

这个的实现方法与webservice调用的方法完全不同。服务端调用webservice服务,使用的是system.net的webclient类的操作方法实现。而netcore webapi的调用使用的是system.net.http来实现

 

要调用的netcore webapi方法如下:

[AllowAnonymous]
        [HttpPost]
        [Route("")]
        public JsonResult ValidateUser([FromBody] UserLogin request)
        {
            logger.Info($"【ValidateUser request】:{JsonConvert.SerializeObject(request)}");

            var code = Computer.AuthorizationCode(request.Cpu, request.MotherBoard, request.PhysicalMemory);
            var manager = new CustomerVerifyManager();
            var model = manager.GetList(it => it.AuthorizationCode == code).FirstOrDefault();
            var res = new ApiResponse();
            if (model == null)
            {
                res.Code = 200;
                res.IsSuccess = true;
                res.ErrMsg = "";
                res.Data = new CustomerVerify { Id = 0, Ip = "0.0.0.0", IsAuthorization = 1, AuthorizationCode = code };
            }
            else
            {
                res.Code = 200;
                res.IsSuccess = true;
                res.ErrMsg = "";
                res.Data = model;
            }
            logger.Info($"【ValidateUser res】:{JsonConvert.SerializeObject(res)}");
            return Json(res);
        }

访问的webapi地址为: api/user

在HttpClientHelper类中post调用方法的实现:

/// <summary>
        /// HttpClient实现Post请求
        /// </summary>
        public static string DoPost(string url)
        {


            string result = "";
            var obj = new UserLoginInfo
            {
                Cpu = Computer.CpuID,
                MotherBoard = Computer.MotherboardID,
                PhysicalMemory = Computer.TotalPhysicalMemory

            };
            using (HttpClient httpClient = new HttpClient())
            {
                //post方式
                //参数
                var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");
                HttpResponseMessage response = httpClient.PostAsync(url, content).Result;
                //确保Http响应成功
                if (response.IsSuccessStatusCode)
                {
                    result = response.Content.ReadAsStringAsync().Result;
                }
            }
            return result;

        }

这里构造的obj对象就是

public JsonResult ValidateUser([FromBody] UserLogin request) 中的UserLogin 对象。其实现的是一个授权服务

难点就是这个方法的构造,若没有接触过需要大量时间尝试

方法中的调用比较简单:

#region 授权           
            var validateResult = HttpClientHelper.DoPost(validServiceUrl + "/api/user");
            Console.WriteLine($"【ValidateUser】validateResult:{validateResult}");
            logger.Info($"【validateResult】:{validateResult}");
            if (validateResult == "")
            {
                var res1 = new ApiResponse
                {
                    Code = 200,
                    IsSuccess = false,
                    ErrMsg = "授权失败"

                };
                return Json(res1);
            }
            else
            {
                var resAuthorize = JsonConvert.DeserializeObject<ApiResponse>(validateResult);
                if (!resAuthorize.IsSuccess)
                {
                    var res1 = new ApiResponse
                    {
                        Code = 200,
                        IsSuccess = false,
                        ErrMsg = "授权失败"

                    };
                    return Json(res1);
                }
                logger.Info($"【授权成功】:{validateResult}");
            }
            #endregion

这样就完全实现了授权服务的服务端调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 .NET Core 编写一个 Web API 项目,你可以按照以下步骤进行操作: 1. 安装 .NET Core SDK:首先,保你已经安装了最新的 .NET Core SDK。你可以从 Microsoft方网站(https://dotnet.microsoft.com/download)下载并安装适合你操作系统的版本。 2. 创建 Web API 项目:打开命令行终或者使用集成开发环境(IDE)如 Visual Studio Code,在你想要创建项目的目录下执行以下命令: ``` dotnet new webapi -n YourProjectName ``` 这将在当前目录下创建一个名为 YourProjectName 的新 Web API 项目。 3. 进入项目目录:执行以下命令进入项目目录: ``` cd YourProjectName ``` 4. 编写 API 控制器:在 Controllers 文件夹中创建一个新的控制器文件(例如 `ValuesController.cs`),并按照需要实现你的 API 逻辑。例如,你可以创建一个简单的 GET 请求处理方法: ```csharp using Microsoft.AspNetCore.Mvc; namespace YourProjectName.Controllers { [ApiController] [Route("api/[controller]")] public class ValuesController : ControllerBase { [HttpGet] public ActionResult<string> Get() { return "Hello, World!"; } } } ``` 5. 运行项目:返回项目根目录,并执行以下命令来运行项目: ``` dotnet run ``` 这将启动一个本地开发服务器,并监听默认的口号(通常是 5000)。 6. 测试你的 API:打开浏览器或使用工具如 Postman,访问 `http://localhost:5000/api/values`(如果你修改了默认的口号,请相应地更改 URL),你将会看到返回的 "Hello, World!"。 这只是一个简单的示例,你可以根据你的需求添加更多的控制器和路由。你也可以使用 Entity Framework Core 或其他库来访问数据库,实现更复杂的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值