帶著問(wèn)題去思考,大家好! 消息 HTTP編程模型的核心就是消息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務(wù)端之間交換請(qǐng)求和響應(yīng)消息。 HttpMethod類包含了一組靜態(tài)屬性: 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") 標(biāo)頭
消息內(nèi)容 HttpContent包含了非虛擬公共方法
第一種方式用于推送方式訪問(wèn)原始的消息內(nèi)容。將一個(gè)流傳遞給CopyAsync方法,然后把消息內(nèi)容推送到這個(gè)流中 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().拉取方式訪問(wèn)。這個(gè)方法異步返回一個(gè)流 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-異步提供消息內(nèi)容的緩沖副本。ReadAsStringAsync返回原始的字節(jié)內(nèi)容,ReadAsByteArrayAsync將內(nèi)容解碼為字符串返回 當(dāng)然也可以擴(kuò)展為 public override Task<object> ReadContentAsync(HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters, IFormatterLogger formatterLogger)
|
|