使用 C# win 应用程序打开 Web 浏览器并在请求中添加请求 headers
Open a web browser using C# win application and add request headers in the request
我有一种情况,我想模拟一个到达应用程序的 Web 请求。它包含一些 url 值和请求 Headers.
我知道我可以使用
启动浏览器
var url = "http://test.com";
var sInfo = new ProcessStartInfo(url);
Process.Start(sInfo);
但是我想在我想在浏览器中打开的 url 中添加一些 header 值。
我试过使用不同的东西,但无法在浏览器中打开它。
我用过WebClient
如下
WebClient client = new WebClient();
var url = "http://test.com";
client.Headers.Add("USER", "ABC");
string text=client.DownloadString(url);
但是我不知道如何在网络浏览器中使用这个字符串。
我也试过WebBrowser
但无法模拟。
根据您提供的信息,我看到三个接近您想要的选项:
设置浏览器控件的文档文本
如果您有原始 html 文本,您可以设置 webBrowser 控件的 属性 DocumentText
来呈现它。该控件负责加载其他资源,但无法加载与文档源相关的资源。但这对于您的用例来说可能不是问题。
WebClient client = new WebClient();
var url = "http://whosebug.com";
client.Headers.Add("USER", "ABC");
string text = client.DownloadString(url);
this.webBrowser1.ScriptErrorsSuppressed = true;
this.webBrowser1.DocumentText = text;
使用导航方法
Navigate
方法有一个重载,需要一个额外的 header 参数。
this.webBrowser1.ScriptErrorsSuppressed = true;
this.webBrowser1.Navigate("http://whosebug.com",
null,
new byte[]{},
"USER: ABC;");
Here is what the headers will look like
使用 CsQuery
如果您只对返回的 html 的一部分感兴趣并且有能力花时间抓取您自己的 html 和 build-up UI 您可以利用 CsQuery 这是一个 jQuery .Net 端口。
WebClient client = new WebClient();
var url = "http://whosebug.com";
client.Headers.Add("USER", "ABC");
string text = client.DownloadString(url);
var csdoc = CsQuery.CQ.CreateDocument(text);
foreach(var q in csdoc.Find("a.question-hyperlink"))
{
Debug.WriteLine(q.InnerText);
}
没有这方面的标准。如果你想通过自定义headers,你需要咨询你正在使用的网络浏览器。不过,我不认为任何主流浏览器都有这样的功能 - 但是,Chrome 和 Firefox 都有扩展,允许您 globally 添加 headers 对每一个请求。也许这对你来说已经足够了,也许还不够。
我有一种情况,我想模拟一个到达应用程序的 Web 请求。它包含一些 url 值和请求 Headers.
我知道我可以使用
启动浏览器var url = "http://test.com";
var sInfo = new ProcessStartInfo(url);
Process.Start(sInfo);
但是我想在我想在浏览器中打开的 url 中添加一些 header 值。 我试过使用不同的东西,但无法在浏览器中打开它。
我用过WebClient
如下
WebClient client = new WebClient();
var url = "http://test.com";
client.Headers.Add("USER", "ABC");
string text=client.DownloadString(url);
但是我不知道如何在网络浏览器中使用这个字符串。
我也试过WebBrowser
但无法模拟。
根据您提供的信息,我看到三个接近您想要的选项:
设置浏览器控件的文档文本
如果您有原始 html 文本,您可以设置 webBrowser 控件的 属性 DocumentText
来呈现它。该控件负责加载其他资源,但无法加载与文档源相关的资源。但这对于您的用例来说可能不是问题。
WebClient client = new WebClient();
var url = "http://whosebug.com";
client.Headers.Add("USER", "ABC");
string text = client.DownloadString(url);
this.webBrowser1.ScriptErrorsSuppressed = true;
this.webBrowser1.DocumentText = text;
使用导航方法
Navigate
方法有一个重载,需要一个额外的 header 参数。
this.webBrowser1.ScriptErrorsSuppressed = true;
this.webBrowser1.Navigate("http://whosebug.com",
null,
new byte[]{},
"USER: ABC;");
Here is what the headers will look like
使用 CsQuery
如果您只对返回的 html 的一部分感兴趣并且有能力花时间抓取您自己的 html 和 build-up UI 您可以利用 CsQuery 这是一个 jQuery .Net 端口。
WebClient client = new WebClient();
var url = "http://whosebug.com";
client.Headers.Add("USER", "ABC");
string text = client.DownloadString(url);
var csdoc = CsQuery.CQ.CreateDocument(text);
foreach(var q in csdoc.Find("a.question-hyperlink"))
{
Debug.WriteLine(q.InnerText);
}
没有这方面的标准。如果你想通过自定义headers,你需要咨询你正在使用的网络浏览器。不过,我不认为任何主流浏览器都有这样的功能 - 但是,Chrome 和 Firefox 都有扩展,允许您 globally 添加 headers 对每一个请求。也许这对你来说已经足够了,也许还不够。