`
阿尔萨斯
  • 浏览: 4177383 次
社区版块
存档分类
最新评论

在使用浏览器控件的程序中判断HTTP错误

 
阅读更多

在自动化浏览器控件提交表单之后,浏览器控件可能会在浏览超时时重定向到一个错误页面。有时需要用代码控制页面返回之后重新提交表单。

IE6.0之前的版本浏览器控件没有获得HTTP状态的接口。一个很依赖于网站设置的方法是,捕获 TitleChange事件,在页面标题包含"找不到页面"或者"Page Not Found"之类的字符串时,认为浏览失败。另一个方法是处理BeforeNavigate2事件,用winhttp api单独和服务器连接,使用HttpQueryInfo来查询,相应参数是HTTP_QUERY_STATUS_CODE。在这之前,你可能要在打开 URL时用INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP | INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS标志来防止服务器的重定向。

这种方法会造成每个页面被下载两次,一次由浏览器控件发起,一次由网址测试代码发起。两次下载有可能有不同的结果,所以这种方法也未必准确。< /p>

浏览器控件不支持IBindStatusCallback接口,也没有从浏览器控件获得IWinInetHttpInfo 接口的已知方法。

InternetGetLastResponseInfo在找不到网页(404)时不会返回错误。

IE6.0版本的浏览器控件可以触发DWebBrowserEvents2::NavigateError事件来通知浏览错误及提供错误代码。但是,这个事件只在使用代码进行浏览之后触发一次。在用户点击链接触发浏览错误时不会触发这个事件。< /p>

参考

http://www.microsoft.com/mind/0796/protocol/protocol.asp

http://msdn.microsoft.com/workshop/browser/webbrowser/reference/ifaces/dwebbrowserevents2/navigateerror.asp

分享到:
评论

相关推荐

    asp.net专家疑难解答200问源码

    82.如何在网页中使用Calendar Web控件显示和选择日期 83.如何在Calendar Web控件中控制个别日的内容及显示 84.如何在Calendar Web控件中控制用户日期选定 86.如何使用XML控件显示XML文件和进行XSLT转换 87.如何...

    《Visual C# .NET精彩编程实例集锦》配套光盘文件【全】

    实例66 如何编写用户控件程序 实例67 如何给程序打包 第4章 系统维护 实例68 如何获取系统基本信息 实例69 如何获取系统服务信息 实例70 如何获取系统进程信息 实例71 如何获取系统日期时间 实例72 如何获取...

    asp.net专家疑难解答200问

    如何在网页中使用Calendar Web控件显示和选择日期 83.如何在Calendar Web控件中控制个别日的内容及显示 84.如何在Calendar Web控件中控制用户日期选定 86.如何使用XML控件显示XML文件和进行XSLT转换 ...

    Excel_VBA程序设计.pdf

    方法2:尽量减少使用对象引用,尤其在循环中 28 1.使用With语句。 28 2.使用对象变量。 28 3.在循环中要尽量减少对象的访问。 28 方法3:减少对象的激活和选择 28 方法4:关闭屏幕更新 29 第七课 如何在Excel里...

    ASP.NET的网页代码模型及生命周期

    Web开发不像软件开发,Web应用实际上是没有状态的,这就说明Web应用程序不自动指示序列中的请求是否来自相同的浏览器或客户端,也无法判断浏览器是否一直在浏览一个页面或者一个站点,也无法判断用户执行了哪个操作...

    ExcelVBA程序设计.doc

    方法2:尽量减少使用对象引用,尤其在循环中 19 1.使用With语句。 19 2.使用对象变量。 20 3.在循环中要尽量减少对象的访问。 20 方法3:减少对象的激活和选择 20 方法4:关闭屏幕更新 20 第七课 如何在EXCEL里...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例050 设置货币值中使用的小数位数 64 实例051 格式化输入数据为货币格式 65 实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67 实例053 动态获得系统当前日期和时间 67 实例054 手动设置系统日期时间...

    Visual C# .NET精彩编程实例集锦

    实例66 如何编写用户控件程序 实例67 如何给程序打包 第4章 系统维护 ---------------------------------- 实例68 如何获取系统基本信息 实例69 如何获取系统服务信息 实例70 如何获取系统进程信息 实例71 如何获取...

    vfp6.0系统免费下载

    Visual FoxPro 不会自动升级控件,因此在发布应用程序时必须知道表单使用的是哪种版本的 ActiveX 控件。 问题 2-8: 是否可以在 Visual FoxPro 6.0 中创建用户自定义集合? 答案: Visual FoxPro 5.0 不直接支持创建...

    selenium怎样在多窗口中运行程序 (1)

    如果想测试一些,不能在firefox中正常显示的程序,则只有安装selenium RC,然后自己编写测试脚本,只有这样,脚本才能在ie中运行。 12.怎样安装多窗口模型? (1)启动selenium-server时,输入以下的命令:java...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    Visual C++编程技巧精选500例.pdf

    021 如何在程序窗口中创建按钮控件? 022 如何限制编辑控件输入的字符类型? 023 如何显示载有RichEdit控件的对话框? 024 如何在列表框中自动装载磁盘文件列表? 025 如何使1istContro1控件支持整栏选择? 026 如何使用...

    程序天下:JavaScript实例自学手册

    21.6 使用DOM判断页面中控件是否嵌套 21.7 使用DOM获取页面中某控件的属性 21.8 将某行排在表格的最后 21.9 动态删除页面中的元素 21.10 克隆表格 21.11 拖动表格行改变顺序 21.12 表格操作常用方法 第22章 流行应用...

    Foxpro 开发答疑160问

    88. 如何使用WebBrowser控件编写Web浏览器 338 89. 如何映射和断开网络驱动器 343 90. 如何实现超级链接效果 349 91. 如何使用Winsock控件进行常用网络应用开发 352 92. 如何使用MAPI控件发送带附件的邮件 359 ...

Global site tag (gtag.js) - Google Analytics