c#HttpResponseMessage
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#HttpResponseMessage相关的知识,希望对你有一定的参考价值。
详细讲解一下这个方法
new HttpResponseMessage Content = new StringContent("false", System.Text.Encoding.UTF8, "application/json")
定义
命名空间:
System.Net.Http
Assemblies:
System.Net.Http.dll, netstandard.dll
表示包括状态代码和数据的 HTTP 响应消息。
C#
复制
public class HttpResponseMessage : IDisposable
继承
ObjectHttpResponseMessage
实现
IDisposable
注解
若要获取的常用方法HttpResponseMessage来自之一HttpClient.SendAsync(HttpRequestMessage)方法。
构造函数
HttpResponseMessage()
初始化 HttpResponseMessage 类的新实例。
HttpResponseMessage(HttpStatusCode)
初始化指定的 HttpResponseMessage 的 StatusCode 类的新实例。
属性
Content
获取或设置 HTTP 响应消息的内容。
Headers
获取 HTTP 响应标头的集合。
IsSuccessStatusCode
获取一个值,该值指示 HTTP 响应是否成功。
ReasonPhrase
获取或设置通常由服务器发出的原因短语(与状态代码一起发出)。
RequestMessage
获取或设置导致此响应消息的请求消息。
StatusCode
获取或设置 HTTP 响应的状态代码。
Version
获取或设置 HTTP 消息版本。
方法
Dispose()
释放由 HttpResponseMessage 使用的非托管资源。
Dispose(Boolean)
释放由 HttpResponseMessage 使用的非托管资源,并可根据需要释放托管资源。
EnsureSuccessStatusCode()
如果 HTTP 响应的 IsSuccessStatusCode 属性是 false,则引发异常。
Equals(Object)
确定指定的对象是否等于当前对象。 (Inherited from Object)
GetHashCode()
作为默认哈希函数。 (Inherited from Object)
GetType()
获取当前实例的 Type。 (Inherited from Object)
MemberwiseClone()
创建当前 Object 的浅表副本。 (Inherited from Object)
ToString()
返回表示当前对象的字符串。
Extension Methods
ToMessage(HttpResponseMessage)
通过 Message 实例创建 HttpResponseMessage 实例。
适用于
.NET Core
2.2 2.1 2.0 1.1 1.0
.NET Framework
4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6 4.5.2 4.5.1 4.5
.NET Standard
2.0 1.6 1.4 1.3 1.2 1.1
Xamarin.android
7.1
Xamarin.ios
10.8
Xamarin.Mac
3.0 参考技术A 这个没什么好讲的,就好像 别人定义了强类型 String int 这些。而这个是一种标准制定。如果你有能力往 HTTP协议上造轮子。哦。不 你应该是重写它的机制,你可以随便更改。否则你只要学会用就行了。 它需要什么类型的按照 它的标准来就行了、
这个就是 普通自己定义的 对象传值类型,还有什么好讲解的吗? 参考技术B 只有去惠特韦尔才能感到 参考技术C 这个函数有什么意义么,没有返回值,也没有把结果打印出来。
public async void Weather(ref string message)
使用的时候也在 形参message 前加上 ref关键字追问
是我问题没描述好。我不太了解这个方法
.NET Web API HttpResponseMessage 模式?
【中文标题】.NET Web API HttpResponseMessage 模式?【英文标题】:.NET Web API HttpResponseMessage Pattern? 【发布时间】:2013-12-03 17:12:38 【问题描述】:所以我已经看到 Web API 2 控制器返回 HttpResponse
和实际对象。示例:
public HttpResponseMessage Get(string id)
var app = apps.Single(c => c.Id == id);
return new HttpResponseMessage(HttpStatusCode.OK)
Content = new ObjectContent<object>(app,
Configuration.Formatters.JsonFormatter)
;
或
public Application Get(string id)
return apps.Single(c => c.Id == id);
我的问题是“正确”的方式? #2 要短得多,但最好是做 #1 还是 #2 自动做 #1 ... ?
【问题讨论】:
【参考方案1】:请参阅 this 和 this SO 问题。
两种情况下的响应都是相同的 (HttpResponseMessage
)。
HttpResponseMessage
允许您使用 HTTP 协议(例如,通过 Headers
属性)并统一您的返回类型。
返回 CLR 类型可能更具可读性,但您会失去返回具有不同状态代码的不同类型的灵活性,除非您使用 dynamic
或 object
,这违背了返回特定类型的目的。
就个人而言,我更喜欢使用 IHttpActionResult
(在 v2 中添加)并在控制器操作上为预期的返回类型指定 ResponseTypeAttribute
以提高可读性。
[HttpGet]
[ResponseType(typeof(Portfolio))]
public IHttpActionResult GetPortfolio([FromUri] long id)
// get portfolio
return Ok(portfolio);
您可以使用默认的IHttpActionResult
实现(参见上面的OkResult
)轻松地操纵响应消息(以RESTful 方式)。避免自己构建HttpResponseMessage
也可以保持代码干净。 Here 是IHttpActionResult
上的官方文章,here 是HttpResponseMessage
与IHttpActionResult
上的有趣对话。
【讨论】:
有道理。谢谢! 可以说,你不想让返回不同类型的灵活性;这只是混淆了服务的意图并使其不那么自我记录。 IMO,鉴于两种方法可以产生完全相同的输出,因此代码越少越好。另外,当您需要使用 HTTP 协议时,您总是可以切换到返回 HttpResponseMessage。否则,HttpResponseMessage 方法只会增加混乱。 自记录 API 参数是有意义的,但您可以使用[ResponseType]
属性向 Swagger 等外部文档发送 API 响应类型信号。我个人比较喜欢return BadRequest()
与Request.CreateErrorResponse
相比的流畅度。此外,IHttpActionResult
实现可以做的不仅仅是返回一个值(例如添加标题、日志消息等)以上是关于c#HttpResponseMessage的主要内容,如果未能解决你的问题,请参考以下文章