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

ASP.NET MVC (五、HttpClient接口解析)前言:MVC对于已经跨域的接口进行解析是个比较容易的事情。况且在第四章节的时候已经通过Ajax进行了页面的解析测试,效果也比较明显。所以本章节从容应对。这个世界上只有一种真正的英雄主义:认清生活的真相,并且仍然热爱它。难道向上攀爬的那条路,不是比站在顶峰更让人心潮澎湃吗?1、MVC项目创建在解决方案上点击【鼠标右键】,依次选择【添加】【新建项目】选择【ASP.NETWeb应用程序(.NETFramework)】项目,点击【下一步】输入项目名称,这里是【M…

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

目录

前言:

1、MVC项目创建

 2、【GET】请求的API解析

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


前言:

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

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

这个世界上只有一种真正的英雄主义:

认清生活的真相,并且仍然热爱它。难道向上攀爬的那条路,不是比站在顶峰更让人心潮澎湃吗?

1、MVC项目创建

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

ASP.NET MVC (五、HttpClient接口解析) 选择【ASP.NET Web应用程序(.NET Framework)】项目,点击【下一步】

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

 输入项目名称,这里是【MVC】ASP.NET MVC (五、HttpClient接口解析)

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

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

 完成创建:

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

 2、【GET】请求的API解析

创建返回对象

[Serializable]
public class ResultType
{
    public int code { get; set; }

    public string message { get; set; }

    public object result { get; set; }
}

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

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

//客户端请求
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接口解析)

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

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

 输入以下编码:

@ViewBag.ResultTyle.code
<hr/>
@ViewBag.ResultTyle.message
<hr/>
@ViewBag.ResultTyle.result

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

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

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

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

解析成功:

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

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

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

//客户端请求
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接口解析)

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

//例如:
//序列化
user user = new user();
user.userName= "admin";
user.password = "123456";
var str = JsonConvert.SerializeObject(user);

post传参案例

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

[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.net/162930.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 渗透测试工具之:BurpSuite「建议收藏」

    渗透测试工具之:BurpSuite「建议收藏」BurpSuiteBurpSuite能高效率地与多个工具一起工作,例如:一个中心站点地图是用于汇总收集到的目标应用程序信息,并通过确定的范围来指导单个程序工作。在一个工具处理HTTP请求和响应时,它可以选择调用其他任意的Burp工具。例如:代理记录的请求可被Intruder用来构造一个自定义的自动攻击的准则,也可被Repeater用来手动攻击,也可被Scanner用来分析漏洞,或者被Spider(网络爬虫)用来自动搜索内容。应用程序可以是“被动地”运行,而不是产生大量的自动请求。Burp

    2022年5月28日
    29
  • scrapy ROBOTSTXT_OBEY 协议:「建议收藏」

    scrapy ROBOTSTXT_OBEY 协议:「建议收藏」

    2022年6月12日
    25
  • 一文理解class.getClassLoader().getResourceAsStream(file)和class.getResourceAsStream(file)区别

    一文理解class.getClassLoader().getResourceAsStream(file)和class.getResourceAsStream(file)区别基础理解都是实现获取在classpath路径下的资源文件的输入流。为什么是classpath而不是src,因为当web项目运行时,IDE编译器会把src下的一些资源文件移至WEB-INF/classes,classPath目录其实就是这个classes目录。这个目录下放的一般是web项目运行时的class文件、资源文件(xml,properties…);另外,在使用spring…

    2022年6月14日
    32
  • glPushMatrix 与 glPopMatrix[通俗易懂]

    glPushMatrix 与 glPopMatrix[通俗易懂]1.原理讲解 终于明白为什么使用glPushMatrix()和glPopMatrix()的原因了。将本次需要执行的缩放、平移等操作放在glPushMatrix和glPopMatrix之间。glPushMatrix()和glPopMatrix()的配对使用可以消除上一次的变换对本次变换的影响。使本次变换是以世界坐标系的原点为参考点进行。下面对上述结论做进一步的解释:1)OpenGL中

    2025年7月7日
    2
  • 4月第3周业务风控关注 | 文化部再次审查直播和游戏产品,已下架4939款直播应用…

    4月第3周业务风控关注 | 文化部再次审查直播和游戏产品,已下架4939款直播应用…

    2021年5月27日
    110
  • c花体复制_花式字体大全可复制 花式字体转换器「建议收藏」

    c花体复制_花式字体大全可复制 花式字体转换器「建议收藏」求可复制花体字?1、windows系统的字体文件都放在这个文件夹下:C:\WINDOWS\Fonts,首先打开此文件夹。2、虽然在此文件夹下右键单击字体文件的菜单中无复制粘贴功能,但是却能使用“复制”快捷键,导出字体文件的方法也就是选中所要导出的字体文件,“Ctrl”“C”(复制快捷键),然后再粘贴到目标文件夹就好了。有好心人发一下英文字母h的花式字体吗,谢谢了,要可以复制的,小写的?这与字体有…

    2022年4月29日
    1.2K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号