C# C从HTTP响应Windows System.Net.HTTP读取所有响应
这是我的方法,一个异步HTTP POST: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;
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中拉出是不够的?