前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET MVC (五、HttpClient接口解析)

ASP.NET MVC (五、HttpClient接口解析)

作者头像
全栈程序员站长
发布2022-09-15 11:26:02
9530
发布2022-09-15 11:26:02
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

目录

前言:

1、MVC项目创建

2、【GET】请求的API解析

3、【Post】请求【API】解析


前言:

MVC对于已经跨域的接口进行解析是个比较容易的事情。况且在第四章节的时候已经通过Ajax进行了页面的解析测试,效果也比较明显。所以本章节从容应对。

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

这个世界上只有一种真正的英雄主义: 认清生活的真相,并且仍然热爱它。难道向上攀爬的那条路,不是比站在顶峰更让人心潮澎湃吗?

1、MVC项目创建

在解决方案上点击【鼠标右键】,依次选择【添加】【新建项目】

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

选择【ASP.NET Web应用程序(.NET Framework)】项目,点击【下一步】

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

输入项目名称,这里是【MVC】

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

选择【MVC】项目,并取消【为HTTPS配置】,点击【创建】

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

完成创建:

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

2、【GET】请求的API解析

创建返回对象

代码语言:javascript
复制
[Serializable]
public class ResultType
{
    public int code { get; set; }

    public string message { get; set; }

    public object result { get; set; }
}
ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

编写解析过程(HomeController.cs):

代码语言:javascript
复制
//客户端请求
HttpClient http = new HttpClient();
//请求地址
string url = "http://localhost:5833/api/Test/GetInfo";
//异步请求
Task<string> task = http.GetStringAsync(url);
//获取数据解析,并发送至前台
ViewBag.ResultTyle = JsonConvert.DeserializeObject<ResultType>(task.Result);
return View();
ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

前台编码:

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

清空当前【Index】视图所有内容【Ctrl+A+Delete】

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

输入以下编码:

代码语言:javascript
复制
@ViewBag.ResultTyle.code
<hr/>
@ViewBag.ResultTyle.message
<hr/>
@ViewBag.ResultTyle.result

启动测试(需要api与mvc均运行)

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

先行启动【demo】的【api】项目后,将 【MVC】设为启动项。

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

解析成功:

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

3、【Post】请求【API】解析

编写解析过程(HomeController.cs):

代码语言:javascript
复制
//客户端请求
HttpClient http = new HttpClient();
var str = "";//请求数据。这里为空
HttpContent content = new StringContent(str);
//请求地址
string url = "http://localhost:5833/api/Test/GetPostInfo";
Task<HttpResponseMessage> postTask = http.PostAsync(url,content);
HttpResponseMessage result = postTask.Result;//拿到网络请求结果
result.EnsureSuccessStatusCode();//抛出异常
Task<string> task = result.Content.ReadAsStringAsync();//异步读取数据
//发送值前台
ViewBag.ResultTyle = JsonConvert.DeserializeObject<ResultType>(task.Result);

编码位置:

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

请求效果:

ASP.NET MVC (五、HttpClient接口解析)
ASP.NET MVC (五、HttpClient接口解析)

如果需要传递数据请进行序列化操作:

代码语言:javascript
复制
//例如:
//序列化
user user = new user();
user.userName= "admin";
user.password = "123456";
var str = JsonConvert.SerializeObject(user);

post传参案例

注:【传参无非就是以【?&】字符串拼接后执行】

代码语言:javascript
复制
[HttpPost]
public void UpdateInfo(string id,string nickName,string introduce) {
    //请求地址
    string url = string.Format("http://localhost:5534/api/Test/UpdateById?id={0}&nickName={1}&introduce={2}", id, nickName, introduce);
    //发送值前台
    Success success = RequestPost(url);
    //根据请求返回判断结果
    if (success.code == 200)
    {
        Response.Write("<script>alert('" + success.message + "');window.location.href='Index'</script>");
    }
    else
    {
        Response.Write("<script>alert('" + success.message + "');window.location.href='UpdatePage'</script>");
    }
}


/// <summary>
/// Post
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public Success RequestPost(string url) {
    //客户端请求
    HttpClient http = new HttpClient();
    var str = "";//请求数据。这里为空
    HttpContent content = new StringContent(str);
    //请求地址
    Task<HttpResponseMessage> postTask = http.PostAsync(url, content);
    HttpResponseMessage result = postTask.Result;//拿到网络请求结果
    result.EnsureSuccessStatusCode();//抛出异常
    Task<string> task = result.Content.ReadAsStringAsync();//异步读取数据
    //发送值前台
    return JsonConvert.DeserializeObject<Success>(task.Result);
}

希望能对大家有所帮助。

第五章【五、ASP.NET MVC (五、HttpClient接口解析)】完结。

【一、控制器与视图:https://laoshifu.blog.csdn.net/article/details/120126288

【二、数据传递:https://laoshifu.blog.csdn.net/article/details/120127320

【三、表单与文件上传:https://laoshifu.blog.csdn.net/article/details/120130566

【四、ASP.NET Web API应用程序与跨域操作:https://laoshifu.blog.csdn.net/article/details/120160728

【五、HttpClient接口解析:https://laoshifu.blog.csdn.net/article/details/120332379

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162930.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 1、MVC项目创建
  • 2、【GET】请求的API解析
  • 3、【Post】请求【API】解析
  • post传参案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档