使用 .HttpClient 获取 HTML .NET Core Web API
.NET 内置的 HTTP 客户端名为 HttpClient,默认即可使用。由于 Net.HTTP 命名空间已涵盖所有功能,因此无需任何独立的第三方库或插件。此外,它还原生支持延迟调用。
以下示例展示了如何通过 GetStringAsync() 以异步、非阻塞的方式轻松获取任意 URL 的内容
private static async Task<string> CallUrl(string full URL)
{
HttpClient client = new HttpClient();
var response = await client.GetStringAsync(full URL);
return response;
}
您只需创建一个全新的 HttpClient 对象,调用 GetStringAsync(),"等待"其完成,然后将结果返回给调用方。现在该功能已集成到控制器类中,您可以在 Index() 方法中直接调用 CallUrl(),无需额外操作。让我们来实现一下。
public IActionResult Index(){
string url = "https://en.wikipedia.org/wiki/List_of_programmers";
var response = CallUrl(url).Result;
return View();}
在此,我们在 URL 中指定了维基百科的地址,通过 CallUrl() 调用该方法,并将返回值保存在变量中。
好了,发送 HTTP 请求所需的代码已经完成。虽然我们尚未对其进行处理,但立即运行代码是个绝佳的主意,这样可以确保接收到维基百科的 HTML 内容,而非出现任何错误。
为此,我们首先在 Index() 方法中的 return View() 处设置一个断点。这将确保您能够通过 Visual Studio 调试器界面查看结果。
通过从 Visual Studio 工具栏中选择“运行”选项,您可以测试上述代码:在断点处,Visual Studio 将暂停,允许您查看应用程序的当前状态。
将鼠标悬停在变量上会显示服务器返回了一个有效的 HTML 页面,这表明我们已准备就绪。如果您从上下文菜单中选择“HTML 可视化器”,将看到该 HTML 页面的预览。