如何利用IDHTTP登陆asp网站并用WEBBROWSER打开登陆后的页面,要求SESSION验证
我用DELPHI写了个小登陆程序,登陆ASP网站后,显示第二个FORM。第二个FORM里就一个WEBBROWSER控件,显示登陆后的页面。
比如
IDHTTP.opst('http://www.xx.com/login.asp',poststr,backstr)
http://www.xx.com/login.asp判断用户密码是否正确 ,如果正确,设置SESSION
然后
WEBBROWSER显示http://www.xx.com/Userindex.asp页面。Userindex.asp有判断SESSION部分
单是做出来的好像总是idhttp设置的SESSION不存在~请问如何处理?
我用DELPHI写了个小登陆程序,登陆ASP网站后,显示第二个FORM。第二个FORM里就一个WEBBROWSER控件,显示登陆后的页面。
比如
IDHTTP.opst('http://www.xx.com/login.asp',poststr,backstr)
http://www.xx.com/login.asp判断用户密码是否正确 ,如果正确,设置SESSION
然后
WEBBROWSER显示http://www.xx.com/Userindex.asp页面。Userindex.asp有判断SESSION部分
单是做出来的好像总是idhttp设置的SESSION不存在~请问如何处理?
解决方案 »
- 我用Delphi7,IDE怎么能透过IDE的框架看到桌面呢?我想象DELPPHI2009一个把桌面挡了,是完全的MDI界面,怎么办?
- 如何设置delphi全屏显示时候,热键弹出窗口不出现
- 请问:如何将fastreport中表格宽度为页宽
- 新建了个QQ群(delphi/SQL(数据库))9983640欢迎加入共同学习
- ==================高分求MIDAS详细解释====================
- csdn的热血男儿们请投中国的长城和布达拉宫一票!
- 都会遇到的简单问题!
- 100分答谢高手!-------谁有写代理服务器的经验呢? 帮一下我好么?
- 如何浏览远程机上的文件目录?
- 数据库中图象的存取是如何实现的?急!!!
- Delphi程序新建Word文稿时自动加密
- 求助,delphi的procedure过程中间可以退出本过程吗?
(1)Length(长度):即标记出现的个数,可以把标记的集合理解为从0开始的一维数组,其次序按照标记在网页位置排列;
(2)Tags(标记):用于过滤出给定标记的集合,如Doc.Al1.Tags(P)得到所有分段标记P;
(3)Item(项目):用于选择集合中的某1个元素,如object.item(0)得到集合的第1个元素,而object.item(i)得到第i+1个元素.
此外,IHTMLElement也是个常用的集合对象,代表网页中指定标记的集合,通过这个集合对象,可以得到网页上特定标记的内容.IHTMLElement有4个主要属性:
(1)InnerText:开始标记和结束标记之间的文本;
(2)InnerHTML:开始标记和结束标记之间的文本和HTML;
(3)OuterText:对象的文本;
(4)OuterHTML:对象的文本和HTML.procedure TForm1.Button1Click(Sender: TObject);
var
Doc:IHTMLDocument2;
input:OleVariant;
userinputelement,pwdinputelement:ihtmlinputelement;
begin
doc:=webbrowser1.document as ihtmldocument2;
userinputelement:=(doc.all.item(''user''(也就是网页中用户名控件的名字),0) as ihtmlinputelement);
userinputelement.value:=edit1.text;(也就是你要向网页输入的东西)
pwdinputelement:=(doc.all.item(''password'',0) as ihtmlinputelement);
pwdinputelement.value:=edit2.text;
input:=doc.all.item(''submit'',0);
input.click;
end; 当提交数据按钮没有NAME属性时,采用如下方法:
procedure TForm1.Button1Click(Sender: TObject);
var
Doc:IHTMLDocument2;
form:ithmlformelement;
userinputelement,pwdinputelement:ihtmlinputelement;
begin
doc:=webbrowser1.document as ihtmldocument2;
userinputelement:=(doc.all.item(''user''(也就是网页中用户名控件的名字),0) as ihtmlinputelement);
userinputelement.value:=edit1.text;(也就是你要向网页输入的东西)
pwdinputelement:=(doc.all.item(''password'',0) as ihtmlinputelement);
pwdinputelement:=edit2.text;
form:=(doc.all.item(''login_form'',0) as ihtmlformelement):form.submit;
end; 登录"按钮一般都是网页中默认的回车按钮,所以可以用上面代码来代替前面的点击按钮.
查了不少资料,iDHTTP和webbrowser 无法共用IE进程,也就是说如果用SESSION无法实现,COOKIE方法看了一些,不过都不理想,大多说用COOKIESMANAGE 什么东西管理的,最后程序还是采用webbrowser负责登陆和显示登陆后的页面。