使用C#从网页运行带API调用的脚本

时间:2016-11-03 17:58:27

标签: c# api httpwebrequest httpwebresponse

我想在C#中使用API​​调用运行脚本。我不想打开网页,只需要运行脚本。我正在尝试这个:

HttpWebRequest request = WebRequest.Create(URL) as HttpWebRequest;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;

HtmlDocument doc; //I have tried HtmlDocument = new HtmlDocument();, didn't work.
var resultStream = response.GetResponseStream();
doc.LoadHtml(resultStream); // I have tried using Load instead of LoadHtml,didn't work out.
doc.InvokeScript("Submit");

我收到错误,使用未分配的变量doc。和doc不包含函数名称LoadHtml。我添加Microsoft.VisualStudio.TestTools.UITesting.HtmlControls;,没有帮助。

我已经检查了问题HtmlDocument.LoadHtml from WebResponse?Get HTML code from website in C#,但他们没有收到错误的文档。

任何解决方案。

2 个答案:

答案 0 :(得分:1)

您必须更改加载HtmlDocument的方式

string html = new WebClient().DownloadString(URL);
WebBrowser browser = new WebBrowser()
{
    ScriptErrorsSuppressed = true,
    DocumentText = string.Empty
};
HtmlDocument doc = browser.Document.OpenNew(true);
doc.Write(html);
doc.InvokeScript("Submit");

希望它有效。

答案 1 :(得分:0)

HtmlDocument doc; //I have tried HtmlDocument = new HtmlDocument();, didn't work.
除非你这样做,否则这项工作不会起作用:

HtmlDocument doc = new HtmlDocument(/*someUri*/, /*documentLocation*/);

您需要初始化文档。这就是你看到

的原因
use of unassigned variable doc

查看此处的文档了解详情:

https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.webtesting.htmldocument.aspx

根据它,构造函数签名是:

  

HtmlDocument(Uri,String)

描述:

  

初始化HtmlDocument类的新实例。此构造函数采用>字符串并将其用作文档。

另外,通过查看文档,它没有方法LoadHtml()