zoukankan      html  css  js  c++  java
  • WebAPI-HTTP编程模型

    带着问题去思考,大家好!
    它是什么?它包含什么?它能干什么?

    消息

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

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

       private static readonly HttpMethod getMethod = new HttpMethod("GET");
    
            private static readonly HttpMethod putMethod = new HttpMethod("PUT");
    
            private static readonly HttpMethod postMethod = new HttpMethod("POST");
    
            private static readonly HttpMethod deleteMethod = new HttpMethod("DELETE");
    
            private static readonly HttpMethod headMethod = new HttpMethod("HEAD");
    
            private static readonly HttpMethod optionsMethod = new HttpMethod("OPTIONS");
    
            private static readonly 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 = new byte[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)

  • 相关阅读:
    COCO2018 目标检测
    最小生成树[摘录自严长生老师的网站]
    PANet训练自己的数据(VIA标注)
    图的遍历[摘录自严长生老师的网站]
    图的链式存储(邻接表)【摘录自严长生老师的网站】
    Android写入到mysql里的中文总是乱码?
    Mac 当xampp里mysql无法启动的解决办法
    【代码段】Android Studio使用DatePicker选择日期
    Android jdbc连接mysql报错解决方案 (Communications link failure)
    绝命毒师口语精析(4)
  • 原文地址:https://www.cnblogs.com/moon3/p/12708145.html
Copyright © 2011-2022 走看看