WebAPI-HTTP编程模型

简介: 它是什么?它包含什么?它能干什么?

带着问题去思考,大家好!

它是什么?它包含什么?它能干什么?

消息

HTTP编程模型的核心就是消息抽象,表示为:HttPRequestMessage,HttpResponseMessage.用于客户端和服务端之间交换请求和响应消息。

HttpMethod类包含了一组静态属性:

privatestaticreadonly HttpMethod getMethod = new HttpMethod("GET");         privatestaticreadonly HttpMethod putMethod = new HttpMethod("PUT");         privatestaticreadonly HttpMethod postMethod = new HttpMethod("POST");         privatestaticreadonly HttpMethod deleteMethod = new HttpMethod("DELETE");         privatestaticreadonly HttpMethod headMethod = new HttpMethod("HEAD");         privatestaticreadonly HttpMethod optionsMethod = new HttpMethod("OPTIONS");         privatestaticreadonly HttpMethod traceMethod = new HttpMethod("TRACE")

标头

  • HttpRequestHeaders:包含请求标头
  • HttpResponseHeaders:包含响应标头
  • HttpContentHeaders:包含内容标头

 

消息内容

HttpContent包含了非虚拟公共方法

  • Task<string> ReadAsStringAsync()
  • Task<byte[]> ReadAsByteArrayAsync()
  • Task<Stream> ReadAsStreamAsync()
  • Task CopyToAsync(Stream stream, TransportContext context)

第一种方式用于推送方式访问原始的消息内容。将一个流传递给CopyAsync方法,然后把消息内容推送到这个流中

using(car client=new HtppClient()) {     var response=           await client.GetAsync("",HttpCompletionOption.ResponseHeadersRead); response.EnsureSuccessStatusCode();var ms=new MemorySteam();await response.Content.CopyToAsync(ms); Assert.True(ms.Length>0); }

也可以使用ReadAsStreamAsync().拉取方式访问。这个方法异步返回一个流

using(var client=new HttpClient())             {                 var response = await client.GetAsync("");                 response.EnsureSuccessStatusCode();                 var steam = await response.Content.ReadAsStreamAsync();                 var buffer = newbyte[2 * 1024];                 var len = await steam.ReadAsync(buffer, 0, buffer.Length);                             }

ReadAsStringAsync和ReadAsByteArrayAsync-异步提供消息内容的缓冲副本。ReadAsStringAsync返回原始的字节内容,ReadAsByteArrayAsync将内容解码为字符串返回

当然也可以扩展为

public override Task<object> ReadContentAsync(HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters, IFormatterLogger formatterLogger)

 

相关文章
|
3月前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
1642 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
7月前
|
数据采集
Haskell编程中,利用HTTP爬虫实现IP抓取
以上就是利用Haskell编写IP抓取爬虫的详细步骤。希望这篇文章的演示对于理解在Haskell这种函数式编程语言中如何实现网络爬虫有所帮助,而其中的网络访问、标签解析和列表处理等技术在许多其他的问题中都有广泛的应用。
180 26
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
621 3
|
7月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
725 20
|
缓存 负载均衡 安全
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
796 0
|
移动开发 Java
Java Socket编程 - 基于Socket实现HTTP下载客户端
Java Socket编程 - 基于Socket实现HTTP下载客户端
189 1
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
246 1
|
Go 开发者
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第24天】Go语言的`net/http`包在HTTP客户端编程中扮演重要角色,但使用时需注意几个常见问题:1) 检查HTTP状态码以确保请求成功;2) 记得关闭响应体以防止资源泄漏;3) 设置超时限制,避免长时间等待;4) 根据需求处理重定向。理解这些细节能提升HTTP客户端编程的效率和质量。
228 1
|
JSON 编解码 Go
Golang中http编程
Golang中http编程
120 2

热门文章

最新文章