簡體   English   中英

如何處理 httpClient 響應正確?

[英]How to handle httpClient respond right?

由於 Net 6.0 的使用,我很沮喪如何將舊的 HttpWebResponse 轉換為 httpClient

有人可以幫我正確處理嗎?

我有 httpClient 請求

    var handler = new HttpClientHandler();
    if (handler.SupportsAutomaticDecompression)
    {
        handler.AutomaticDecompression = DecompressionMethods.GZip | 
            DecompressionMethods.Deflate;
    }
    var httpClient = new HttpClient(handler);
    httpClient.SendAsync(new HttpRequestMessage(new HttpMethod.Post, url));

我有舊的 HttpWebResponse

    using (var dataStream = httpWebRequest.GetRequestStream())
    {
        var reqDataByte = Encoding.GetEncoding(encoding).GetBytes(reqData);
        dataStream.Write(reqDataByte, 0, reqDataByte.Length);
    }

    using (var httpWebResponse = (HttpWebResponse) httpWebRequest.GetResponse())
    {
        var responseStream = httpWebResponse.GetResponseStream();

        if (responseStream != null)
            using (var streamReader =
                new StreamReader(responseStream, Encoding.GetEncoding(encoding)))
            {
                 getString = streamReader.ReadToEnd();
            }
    }

無法理解如何使用 httpClient 正確處理響應

    using var dataStream = httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
    var reqDataByte = Encoding.GetEncoding(encoding).GetBytes(reqData);
    dataStream.CopyToAsync(reqDataByte, 0, reqDataByte.Length);

    using var response = (HttpWebResponse) httpClient.GetResponse();
    var responseStream = response.GetResponseStream();

    using var streamReader =
        new StreamReader(responseStream, Encoding.GetEncoding(encoding));
    getString = streamReader.ReadToEnd();

如果您嘗試簡單地發布原始字節並返回字符串響應,那非常簡單。 您將需要這是一個異步方法並等待異步調用。

var reqDataByte = Encoding.GetEncoding(encoding).GetBytes(reqData);
var response = await httpClient.PostAsync(url, new ByteArrayContent(reqDataByte));
if (response.IsSuccessStatusCode)
{
    getString = await response.Content.ReadAsStringAsync();
}
else
{
    //Handle any unsuccessful post
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM