delphi网页如何交互

ljking0731 2010-03-04 03:06:31
目前只知道在WebBrower里的URL传入参数的方法,这只是单向的。
请问有没有其他的方式可以让delphi程序与网页进行数据交互(双向的)?
...全文
359 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziseliuxingzh 2011-03-01
  • 打赏
  • 举报
回复
学习了!
liangpei2008 2010-03-05
  • 打赏
  • 举报
回复
IndyHttp\XMLHttp都行
kfcoffe 2010-03-05
  • 打赏
  • 举报
回复

for K := 0 to Form1.WebBrowser4.OleObject.Document.all.tags('span').Length - 1 do
begin
str1 := Form1.WebBrowser4.oleobject.document.all.tags('span').item(K).innertext;
if ansicontainsstr(str1,'write a comment') then begin
Form1.WebBrowser4.oleobject.document.all.tags('span').item(K).click;
break;
end;
end;


这是模拟点击网页中的1个元素!
lihuasoft 2010-03-05
  • 打赏
  • 举报
回复
8楼追加:
在浏览器地址栏输入
http://xxxxxxxxx/Default2.aspx?QS=eefffsssss
回车后返回的HTML页面内容是:
eefffsssss
dj2437 2010-03-05
  • 打赏
  • 举报
回复
你去找下用网页做界面的方法用的COM组件传递,绝对精确
liangpei2008 2010-03-05
  • 打赏
  • 举报
回复
最好不要在URL后+参数实现,这种提交方式默认是用GET方式提交
隐患:
1.不安全,容易被用户看到
2.提交数量有大小限制(使用GET来提交时,QueryString是放到HTTP HEADERS中的,HTTP协议对HEADER大小有限制)
所以用INDYHTTP.POST方法来实现表单数据的提交(这时提交的数据是放到POST DATA中)
liangpei2008 2010-03-05
  • 打赏
  • 举报
回复

function TForm1.GetData(url:string): string;
var
responseText: WideString;
xmlHttp: oleVariant;
begin
Result:='';
try
xmlHttp:=CreateOleObject('Msxml2.XMLHTTP');
xmlHttp.open('GET',url,false);
xmlHttp.send();
responseText:=xmlHttp.responseText;
if xmlHttp.status='200' then
begin
Result:=responseText;
end;
xmlHttp := Unassigned;
except
Result:='';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.lines.text:=GetData('xxxxx?参数1=...')
end;
ljking0731 2010-03-05
  • 打赏
  • 举报
回复
引用 12 楼 liangpei2008 的回复:
IndyHttp\XMLHttp都行


1、在程序的界面里要呈现网页,除了webBrower控件,还有其他的没。
2、程序传入参数给网页。
目前,我只是用在URL后加参数的方式,还有没有其他简单的方式
3、网页执行结果后,返回结果给程序,这个该如何实现

能不能举个简单的例子?
JPEXE 2010-03-04
  • 打赏
  • 举报
回复
用TWebbrowser在程序中加载显示一个页面,当鼠标点击页面中的对象时,程序可以响应到这个点击事件。不知楼主想要的是不是这个意思?如果是的话,那就要让TWebbrowser实现IDocHostUIHandler接口,然后在该接口的GetExternal方法中进行处理。这些做起来还是有些复杂,建议直接去用EmbeddedWB组件,它都实现了这些。如果楼主真想自己研究,下面这篇文章不错,可以参考:
http://blog.csdn.net/CathyEagle/archive/2004/08/09/69607.aspx
lihuasoft 2010-03-04
  • 打赏
  • 举报
回复

////Default2.aspx


<%@ Page Language="C#" %>

<%
Page.Response.Write(Page.Request["QS"]);
%>

procedure TForm1.Button1Click(Sender: TObject);
var
SS: TStringList;
Stream: TStringStream;
begin
Stream := TStringStream.Create('');
SS := TStringList.Create;
SS.Add('QS=eefffsssss');
Self.IdHTTP1.Post('http://xxxxxxxxx/Default2.aspx', SS, Stream);
Showmessage(Stream.DataString);
SS.Free;
Stream.Free;
end;
lihuasoft 2010-03-04
  • 打赏
  • 举报
回复
首先你要知道“与网页交互”的说法是不准确的。准确一点的说法是“与Web服务器交互”
Web服务器只是根据你的请求返回给你一串HTML,浏览器把这串HTML展示给你,就是你看到的客户端页面
页面永远是存在于客户端(浏览器端)的,是静态的,不存在交互的说法
zz1001 2010-03-04
  • 打赏
  • 举报
回复
我也来瞧瞧,长个见识!
ljking0731 2010-03-04
  • 打赏
  • 举报
回复
引用 4 楼 xisiyong 的回复:
让delphi程序与网页进行数据交互(双向的),没明白你的意思,webbrowser能得到网页里面的所有数据呀。你可以给网页里面的某个input框赋值呀。也可以点击提交。。。这不就是双向的吗?


能不能举个例子,没用过哈
xisiyong 2010-03-04
  • 打赏
  • 举报
回复
让delphi程序与网页进行数据交互(双向的),没明白你的意思,webbrowser能得到网页里面的所有数据呀。你可以给网页里面的某个input框赋值呀。也可以点击提交。。。这不就是双向的吗?
ljking0731 2010-03-04
  • 打赏
  • 举报
回复
引用 1 楼 wzwcn 的回复:
用Indy的TIdHttp是最方便的


怎么个使用,能不能举个例子呀
slmax1 2010-03-04
  • 打赏
  • 举报
回复
同上,TIdHttp是最方便的
wzwcn 2010-03-04
  • 打赏
  • 举报
回复
用Indy的TIdHttp是最方便的

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧