ASP.NET Web API 可以自动序列化你的模型到JSON,XML或一些其它格式,然后把已序列化的数据写入到HTTP响应消息的正文。只要客户端可以读取序列化的数据,那么它同样可以反序列这个对象。...通过返回HttpResponseMessage而不是产品,我们可以控制HTTP响应消息,包括状态代码和位置标头的详细信息。 ...CreateResponse方法将会创建HttpResponseMessage,并自动将Product对象序列化表示形式写入到响应消息的正文中。 ...这个方法有两个参数,一个是产品id和更新的产品,id参数是从URI中获得的,product参数是从请求正文反序列化得来的。...默认情况下,ASP.NET Web API框架从路由获取简单的参数类型,从请求正文获取复杂的类型。 第五个方法:删除产品,在控制器添加代码如下。
使用 Flurl 构建,首先需要通过 Nuget 安装 Flurl 组件。...Http 增强 Flurl 是模块化的,所以还需要安装 Flurl.Http using Flurl; using Flurl.Http; var result = await "http://www.some-api.com...上面的代码会发送一个GET请求,并返回一个IFlurlResponse,可以得到 StatusCode,Headers等,也可以通过 GetStringAsync 和 GetJsonAsync 得到响应内容...如果只是想获取响应内容,我们看看 Flurl 有多简单: T poco = await "http://api.foo.com".GetJsonAsync(); string text = await...Flurl 也很好的支持了IOC容器,你也可以在依赖注入中使用它。
,你也可以构造整个响应消息,并用HTTPResponseMessage来包含它: 1 public Product GetProduct(int id) 2 { 3 var...GlobalConfiguration.Configuration.Filters.Add(new NotImpleExceptionFilterAttribute()); } } HttpError----HTTP错误 HttpError对象为在响应正文中返回错误消息提供了响应的方法...以下实例演示了如何用HttpError在响应中返回HTTP状态码“404--未找到”: 1 public HttpResponseMessage GetProduct(int id) 2 { 3...但如果所请求的产品未找到,则HTTP响应会在请求体中包含一个HttpError。...HttpStatusCode.NotFound, err); 10 } Using HttpError with HttpResponseException以HttpResponseException的方式来使用HttpError 前面的例子是从Action
以上主要讲解了HttpRequestMessage对象和HttpResponseMessage对象包含的主要内容,请求和响应消息都可以包含一个可选的消息正文,两中消息类型以及消息内容,都可以使用响应的标头...响应的状态代码 ReasonPhrase 获取或设置服务器与状态代码通常一起发送的原因短语 RequestMessage 获取或设置导致此响应消息的请求消息 IsSuccessStatusCode 获取一个值...HttpResponseHeaders Content-Type 定义请求或响应有效载荷正文中,资源表示使用的媒体类型 HttpContentHeaders (2).HttpHeaders...Clear 从 HttpHeaders 集合中移除所有标头。 Remove 从HttpHeaders集合中移除指定的标头。...4.HTTP消息内容解析: 在.NET4.5版本的HTTP模型中,HTTP消息的正文由抽象基类HttpContent表示,HttpResponseMessage和HttpRequestMessage
ProductStore.NotImplExceptionFilterAttribute()); // Other configuration code(其它配置代码)... } } HttpError——HTTP错误 HttpError对象为在响应正文中返回错误消息提供了相应的方式...以下示例演示了如何用HttpError在响应体中返回HTTP状态码“404 — 未找到”: public HttpResponseMessage GetProduct(int id) { Product...但如果所请求的产品未找到,则HTTP响应会在请求体中包含一个HttpError。...); } } Using HttpError with HttpResponseException以HttpResponseException的方式来使用HttpError 前面的例子是从控制器动作返回一个...HttpResponseMessage消息,但你也可以使用HttpResponseException来返回一个HttpError。
public HttpResponseMessage(HttpStatusCode statusCode); // 获取或设置 HTTP 响应消息的内容。...HTTP 响应消息的内容。 public HttpContent Content { get; set; } //获取 HTTP 响应标头的集合。...public string ReasonPhrase { get; set; } //获取或设置导致此响应消息的请求消息。...Age { get; set; } //获取或设置 HTTP 响应的 Cache-Control 标头值。...Date { get; set; } //获取或设置 HTTP 响应的 ETag 标头值。
WebAPI 默认使用下面的规则进行参数绑定: 简单类型, WebAPI 尝试从 URL 中获取它的值。...复杂类型则使用 media-type formatter 从 HTTP 请求的正文 (body) 中读取。...下面的例子定义了一个 GeoPoint 类型, 以及如何从 URI 中获取 GeoPoint 实例。...使用 [FromBody] 要强制 WebAPI 从 request正文 (body) 中读取一个简单类型的参数, 需要在该参数上添加 FromBody 标记: public HttpResponseMessage...由于 HTTP 请求正文可能是个没有缓冲的流, 只能读取一次, 所以 Web API 加强了一个规则, 那就是每个方法只有一个绑定能够从 HTTP 请求正文读取数据。
(2).将HTTP请求消息的各元素转换成控制器操作方法的参数,并将操作方法的返回值转换为有效的HTTP响应正文。...(HTTP响应body的数据格式可以客户端和服务器进行协商,默认为json格式,对于json格式的好处,在这里就不做介绍,但是个人觉得json格式应该会成为以后数据格式的重心。) ...ResponseMessage():创建具有指定响应的ResponseMessageResult。 ... public virtual Task ExecuteAsync(HttpControllerContext controllerContext...ASP.NET Web API框架支持从请求元素到操作方法参数的绑定。对于HTTP响应值转换成适当的HTTP响应消息正文。
命名空间 System.Net.Http 以及 System.Net.Http.Headers 提供了如下内容: HttpClient 发送和接收 HTTP 请求与响应; HttpRequestMessage...and HttpResponseMessage 封装了 RFC 2616 定义的 HTTP 消息; HttpHeaders 封装了 RFC 2616 定义的 HTTP 标头; HttpClientHandler...负责生成HTTP响应消息的HTTP处理程序。...System.Net.Http 能够处理多种类型的 RFC 2616 定义的 HTTP 实体正文, 如下图所示: ?...ProcessResponse(HttpResponseMessage response, CancellationToken cancellationToken) { var request
2.GetStreamContent方法:获取请求获取流内容。...objectContent.Value; return true; } value = default (T); return false; } 根据传入的响应消息对象获取响应消息的内容...四.WebApi核心对象HttpClient: 上面介绍完服务器端的接收和响应HTTP请求的操作方法,接下来介绍一个客户端生成HTTP请求,用与请求和获取服务器返回的消息,在新版本的.NET中,提供类...DefaultRequestHeaders:获取应随每个请求发送的头。 MaxResponseContentBufferSize:获取或设置中的最大字节数读取响应内容时缓冲。 ... 操作应完成时(在响应可利用或在读取整个响应内容之后)。
对于 HttpClient 的请求响应值 HttpResponseMessage 来说,既然继承了 IDisposable 接口,自然就是想让大家可以通过 using 或者手动调用 Dispose 进行释放的...至少这样写起来不亏 对 HttpResponseMessage 直接或间接调用 Dispose 方法,将会自动调用到 HttpResponseMessage 的 Content 的释放,也就是从 Content...里所获取的 Stream 可以不用再释放。...当然,同时对 Content 里所获取的 Stream 和 HttpResponseMessage 都调用释放也没有什么问题,如以下代码是没有问题的,框架内部处理了 using...只对 HttpResponseMessage 或者是 Content 里所获取的 Stream 进行释放,其中之一调用 Dispose 释放效果约等于相同。
对于预检请求,CorsMessageHandler会直接创建HttpResponseMessage对象予以响应。...如果授权检验失败,创建的HttpResponseMessage具有的状态为“400, Bad Request”,CorsResult携带的错误响应会作为响应的主体内容。...我们接下来从表示当前请求的HttpRequestMessge对象中直接获取当前HttpConfiguration对象,并调用扩展方法GetCorsPolicyProviderFactory得到注册在它上面的...CorsResult得到的CORS响应报头添加到此HttpResponseMessage的报头集合中。...创建CorsRequestContext对象,而AddCorsHeaders方法则将从CorsResult中获取的CORS响应报头添加到指定的HttpResponseMessage中。
发送请求并获取响应 现在,我们可以使用PersonApi类中的PatchPersonAsync方法发送请求,更新指定ID的Person实体类,并获取更新后的数据。...最后,我们从响应中获取更新后的Person实体类。 这就是一个使用WebApiClientCore中JsonPatchDocument的完整客户端请求和服务端响应流程案例。...注意,在服务端控制器中,我们使用FromBody属性将更新文档从请求体中获取,并使用JsonPatchDocument.ApplyTo方法将更新应用到Person实体类中。...,包括HTTP方法、URI、状态码和响应正文。...如果指定了Accept内容,则会从响应头中获取Content-Type,并与Accept内容进行匹配。如果匹配成功,则直接返回,否则抛出异常。
; } /// /// 用户发送消息后,微信平台自动Post一个请求到这里,并等待响应XML。.../// [HttpPost] [Route("")] public HttpResponseMessage Post()...* 收到重复消息通常是因为微信服务器没有及时收到响应,会持续发送2-5条不等的相同内容的RequestMessage*/ messageHandler.OmitRepeatedMessage...if (messageHandler.UsingEcryptMessage) { //记录加密后的响应信息...> [HttpGet] [Route("JSSDK/{*url}")] public HttpResponseMessage GetJSSDK
ASP.NET Web API分别利用 HttpRequestMessage和HttpResponseMessage对象表示消息处理管道处理的请求和响应,而WCF消息处理管道的请求和响应均是一个Message...如果指定的参数值为True,方法执行之后被封装的HttpRequestMessage/HttpResponseMessage对象会从HttpMessage对象中抽取出来,所以再次调用它们会返回Null。...最终的响应消息依然是一个HttpMessage对象,它是对我们创建的HttpResponseMessage对象的封装。...通过上面的介绍我们知道整个编码工作完全是针对被HttpMessage封装的HttpResponseMessage对象进行的,在HttpResponseMessage中保存的响应内容就是客户端接收到的内容...调用SendAsync方法返回的是一个Task对象,我们执行这个Task对象并获得表示响应的HttpResponseMessage对象,然后以反射的形式将其封装成
其实这个答案是需要分为两个过程,分别是请求和响应,来进行回答。...Cookie 内容,使用 SetCookies 方法只能分割 , 逗号作为分隔符的 Cookie 情况 以上是对于请求的情况,请求是从客户端到服务器端的过程。...接下来聊聊从服务器端到客户端的过程: 响应 Response 的 Cookie 是放在 Set-Cookie 头里面,多条 Cookie 一般对应多条 Set-Cookie 头。...,可以使用如下代码进行解析 /// /// 获取 设置 /// /...GetCookie(this HttpResponseMessage httpResponseMessage) { Uri requestUri = httpResponseMessage.RequestMessage.RequestUri
ASP.NET Web API 以request-response 的消息转换模式为主,客户端向服务器发送请求,服务器端响应客户端请求。响应可同步或异步。 ...defaults: new { id = RouteParameter.Optional }); 10: } 但是此方法不足以应对所有情况,如果想实现从中央仓库删除文件,并且想调用同一个方法来获取文件...如图所示: RemoveFile 方法可被Delete(HttpDelete) 或 Get(HttpGet)方法同时调用,从某种程度来说,HTTP 方法使开发人员命名 API“方法”变得简单而标准。...数据流 网络App 最常见的执行操作就是获取数据流。ASP.NET Web API 能够处理客户端与服务器端传输的重量级的数据流,数据流可来源于目录文件,也可是数据库中的二进制文件。...本文主要介绍两种方法“Download”和“Upload”实现数据流相关的功能,Download是从服务器下载数据操作,而Upload则是上传数据到服务器。
scope: 表示授权的范围,如果采用“wl.signin”意味着允许用户从客户端应用直接登录到Live Services,如果Scope为“wl.basic”则表示运行客户端应用获取联系人信息。...这个重定向地址对应着客户端应用需要获取授权资源的页面,该页面可以直接从代表当前地址的URL中获得Access Token,并利用它来获取目标资源。...试着从当前请求中获取携带的Access Token。...cookieValue.Cookies.FirstOrDefault().Value; 11: return true; 12: } 13: 14: //从查询字符串中获取...在该View中,我们从当前地址的Hash(#)部分得到Access Token,并将其作为查询字符串附加到从ViewBag中得到的资源访问地址上,并通过设置location的href属性的方式携带Access
对象,后者将此HttpResponseMessage回传给消息管道进行相应处理后最终完成对请求的响应。...在整个管道完成对请求的处理并最终对请求予以响应之后,HttpControllerHandler会负责完成如下三项与资源释放有关的工作。...调用返回的HttpResponseMessage对象对响应消息作相应的释放工作。 对于Self Host来说,通过《Self Host模式下的ASP....的介绍我们知道请求的监听、接收和响应是通过HttpBinding创建的信道栈来完成的。...该信道栈处理的消息类型为HttpMessage,具体代表请求消息和响应消息的HttpMessage分别是对HttpRequestMessage和HttpResponseMessage对象的封装。
领取专属 10元无门槛券
手把手带您无忧上云