C# C从HTTP响应Windows System.Net.HTTP读取所有响应

C# C从HTTP响应Windows System.Net.HTTP读取所有响应,c#,system.net,C#,System.net,这是我的方法,一个异步HTTP POST: using System; //main data types using System.Net.Http; //for HTTP client using System.Threading.Tasks; //for Async Request/Response using Newtonsoft.Json;

这是我的方法,一个异步HTTP POST:

using System;                               //main data types
using System.Net.Http;                      //for HTTP client
using System.Threading.Tasks;               //for Async Request/Response
using Newtonsoft.Json;                      //for JSON properties

//... the call..
public void Something()
{
PostConsentAsync(cnsnt.BaseURL, cnsnt.Headers, cnsnt.Body).GetAwaiter().GetResult();
}

//... the async task...
public async Task HttpPostAsync(Uri HTTPaddress, cHeaders myHeaders, cBody myBody)
{
    try
    {
        HttpClient client = new HttpClient();
        System.Text.UTF8Encoding utf8 = new System.Text.UTF8Encoding(encoderShouldEmitUTF8Identifier: false, throwOnInvalidBytes: true);

        using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, HTTPaddress))
        {
            client.BaseAddress = HTTPaddress;
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("*/*"));

            client.DefaultRequestHeaders.Add("Connection", "keep-alive");
            client.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
            client.DefaultRequestHeaders.Add("SomeHeader", myHeaders.SomeHeader);
            client.DefaultRequestHeaders.Add("MyOtherHeader", myHeaders.MyOtherHeader);
            //etc..

            request.Content = new StringContent(JsonConvert.SerializeObject(myBody, Formatting.Indented), utf8, "application/json");

            using (HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false))
            {
                Int32 code = (Int32)response.StatusCode;

                //How to read ALL the response, including headers, body etc???

                Console.WriteLine("03\r\nRESPONSE: {0}", response.RequestMessage.ToString() + "\r\nBody:\r\n" + <?????> + "Response HTTP status: " + code + " [" + response.StatusCode.ToString() + "]");
                Console.ReadLine();
            }
        }
    }
    catch (Exception e)
    {
        Console.WriteLine("Error in " + e.TargetSite + "\r\n" + e.Message); Console.ReadLine();
    }
}
我需要阅读所有的回复,但似乎很难。。。
我需要完整的回复信息,另外,还有一些形式的回复。这样我就可以将它提供给另一个HTTP请求。因此,我试图获取整个响应,并以某种方式将其输入到一个类中,得到类似response.myHeader1.Name header或response.myHeader1.Value header的值,如果为null,则为null等类似内容。但我无法获取整个消息,我获取了标题,我获取了代码,即200成功等,但正文不在那里等。

要检索正文,您需要访问HttpResponseMessage的属性,例如:


var body=await response.Content.ReadAsStringAsync

OP询问如何获取服务器返回的原始响应,而不仅仅是content@Pedro:好极了,尸体的确被找回了。对我来说,这本身就是一个重大的飞跃。然而,我需要全部的东西,一些标题中有一些我需要阅读的值,希望服务器响应消息中的所有信息谢谢你的洞察力!哦,我误解了,你已经可以得到标题和状态代码了,只有尸体失踪了。将它们从response.Header和response.StatusCode中拉出是不够的?