你可以把Java语从网络Browser控制中注入到你的C#代码,并在你想要时将其节省下来,而不用把储蓄作为方言箱。 如果一个自动网站需要登录和执行会议或要求核查等,那么,印行《Java》的文字确实是有益的。
逻辑是将 Java印成像(在网络浏览器控制中)那样下载文档,然后由tes改成第64号指示和返回基数。 然后,C#代码将第64号基数转换成tes子,并将作为软盘上的文件保存。 它可以是任何档案,例如: Excel或PDF等。
由于WebBrowser控制是以因特网探索者为基础的,因此它不支持快车牌照,因此你必须使用XMLHttpRequest。 如网页浏览器控制网页下载链接即可,然后在网上浏览器控制中注入文字:
string strScript = "var fileInBase64; " +
"var oReq = new XMLHttpRequest();" +
" oReq.onload = function(e) {" +
" var buffer = oReq.response;" +
" //Convert response to base64 string" +
" var reader = new FileReader();" +
" reader.readAsDataURL(buffer);" +
" reader.onloadend = function() {" +
" fileInBase64 = reader.result;//Buffer value in fileInBase64" +
" }" +
" };" +
" oReq.open( GET , downloadLink );" +
" oReq.responseType = blob ;" +
" oReq.send(); ";
HtmlElement head = wb.Document.GetElementsByTagName("head")[0];
HtmlElement script = wb.Document.CreateElement("script");
script.SetAttribute("text", strScript);
head.AppendChild(script);
由于XMLHttpRequest可能无法立即准备就绪,因此,在等待1或2秒后,可检索文件InBase64变式注入其他文字的价值,或添加另一个条件(或逻辑),等待文件InBase64变数存档。
string strScript = "function getBase64(){return fileInBase64;}";
HtmlElement head = wb.Document.GetElementsByTagName("head")[0];
HtmlElement script = wb.Document.CreateElement("script");
script.SetAttribute("text", strScript);
head.AppendChild(script);
object o = wb.Document.InvokeScript("getBase64");
现在, object的档案是第64号底线,随时可以保存。 使用以下代码在软盘上加以节省:
o = o.ToString().Replace("data:application/excel;base64,", ""); //replace to make a valid base64 string.
System.IO.File.WriteAllBytes("D:/file.xls", Convert.FromBase64String(o.ToString()));
对我来说,这是在从网上浏览器下载档案时绕过除方言箱的最佳解决办法。 我希望这也将有助于其他人。