[英]Send Asp.net HttpClient Get result to browser
我有一个asp.net mvc控制器方法“索引”,如下所示。 我想使用HttpClient GetAsync方法从wwww.google.com获取响应,然后将此响应作为响应发送到浏览器,因此浏览器显示www.google.com。 但是我不知道如何用从client.GetAsync获得的响应替换响应。 请帮忙! 我不想使用重定向。
public async Task<ActionResult> Index()
{
HttpClient client = new HttpClient();
var httpMessage = await client.GetAsync("http://www.google.com");
return ???;
}
您可以使用ReadAsStringAsync()
方法将http调用的响应作为字符串ReadAsStringAsync()
,并将该字符串作为action方法的响应返回。
public async Task<ActionResult> Index()
{
HttpClient client = new HttpClient();
var httpMessage = await client.GetAsync("http://www.google.com");
var r = await httpMessage.Content.ReadAsStringAsync();
return Content(r);
}
当您访问Index
操作时,上面的代码将返回google.com的内容。
请尝试像浏览器一样查看这篇文章HttpClient Request
response.EnsureSuccessStatusCode();
using (var responseStream = await response.Content.ReadAsStreamAsync())
using (var decompressedStream = new GZipStream(responseStream, CompressionMode.Decompress))
using (var streamReader = new StreamReader(decompressedStream))
{
return streamReader.ReadToEnd();
}
我在机器上做样品
在这里全力以赴
public async Task<string> Index()
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html,application/xhtml+xml,application/xml");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");
var httpMessage = await client.GetAsync("http://www.google.com");
httpMessage.EnsureSuccessStatusCode();
using (var responseStream = await httpMessage.Content.ReadAsStreamAsync())
using (var decompressedStream = new GZipStream(responseStream, CompressionMode.Decompress))
using (var streamReader = new StreamReader(decompressedStream))
{
return streamReader.ReadToEnd();
}
// return View();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.