WebAPI-HTTPプログラミングモデル

5628 ワード

問題を持って考えてください。皆さん、こんにちは。何ですか?何が含まれていますか?何ができますか
メッセージ
HTTPプログラミングモデルの核心はメッセージ抽象であり、HttPRequest Message、HttpResonseMessageとして、クライアントとサービス端末の間で要求と応答メッセージを交換するために使用される。
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")
槍先
  • HttpRequest Headers:要求ヘッダ
  • を含む。
  • HttpResonseHeaders:レスポンスヘッダ
  • を含む。
  • HttpContentHeaders:コンテンツヘッダ
  • を含む。
     
    メッセージの内容
    HttpContentは非仮想公共方法を含んでいる。
  • Task ReadAstringAsync()
  • Task ReadAsByteArayArync()
  • Task ReadAstreamAync()
  • Task CopyToAsync
  • 第1の方法は、送信方式を押して元のメッセージコンテンツにアクセスするために使用される。一つのストリームをCopyArync方法に渡し、メッセージの内容をこのストリームに転送する。
    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);
    }
    ReadAsStreamAync()・引取方式でアクセスすることもできます。この方法は非同期的に一つのストリームを返す。
                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);
                   
                }
    ReadAstringAsyncとReadAsByteArayArync-非同期はメッセージ内容のバッファコピーを提供する。ReadAstringAyncは元のバイト内容を返し、ReadAsByteArayAryncは内容を文字列に復号して返します。
    もちろん拡張も可能です。
    public override Task ReadContentAsync(HttpRequest Message request) IEnumerable formaters,IFFT Logter formater Loggar)