超难!!ActiveForm如何和IIS服务器通讯?(300分)

  • 主题发起人 主题发起人 hpretty
  • 开始时间 开始时间
H

hpretty

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi 的ActiveForm中可否使用类似于MFC中的 InternetSession 连接一样的组件。
我的意思是,我在ActiveForm中想调用服务端的 Http 请求?因为我想接收服务器传回来的数据,这个服务器IIS中的ASP.NET(C#)程序
 
ACTIVEFORM上可不可以放HTTP控件,可以放就可以通讯

不过据我了解,这东东在客户机运行啊,要与服务器通讯那就是客户机与远程服务器
的关系了,虽然你运行的是远程服务器上的OCX
 
ActivexForm只不过是COM而已,一旦加载后干什么都行,包括偷听用户所再网络的数据、
定时向你汇报这样龌龊的事都行。
 
如何做,用什么控件做,我知道是可以做,但你们要给一个方向呀!
不过这个可能同一般的Activeform还有些区别,因为我是已经做好的服务器端
我只想用Delphi 做的Activeform替代VC++做的ActiveX控件。
 
干吗老控件控件的,学学用API和COM。
如果是http,用Wininet的API或者IXMLHTTPRequest都可以
给你个例子,那http://www.163.com

function Get163: string;
var
s: string = '*/*';
buf: char[0..4095] of char;
n: dword;
hSession, hConn, hRequest: THandle;
begin

hSession = InternetOpen(nil,INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
hConn = InternetConnect(hSession, 'www.163.com', 80, nil, nil, INTERNET_SERVICE_HTTP, 0,0);
hRequest = HttpOpenRequest(hconn,'GET', '/', 'HTTP/1.1', nil, @s[1], INTERNET_FLAG_RELOAD or INTERNET_FLAG_NO_CACHE_WRITE);
result := '';
if HttpSendRequest(hRequest, nil, 0, nil, 0) then
repeat
if not InternetReadFile(hRequest, buf, sizeof(buf), n) then
begin
//something wrong, handle here.
end;
if n = 0 then break; //全部读完了
//处理buf里的数据
setstring(s, buf, n);
result := result + s;
until false;
CloseHandle(hRequest);
CloseHandle(hConn);
CloseHandle(hSession);
end;

或者用IXMLHttpRequest, 这样做
uses msxml;
function get163: string;
var
http: IXMLHttpRequest;
begin
http := coXMLHttp.create;
http.open('GET', 'http://www.163.com', false, nil, nil);
http.send(varEmpty);
result := http.responsetext;
end;
 
多谢!试试先!!
 
接受答案了.
 
TO:sofox
你的InternetConnect这个函数如果需要用户名密码登录的网站,就一定要输入用户名口令2个参数才能与http服务器连接上。

在ActiveForm中有没有办法获得当前activex控件所在网页与http服务器通信的session,
再通过session什么之类的东西获得当前用户的用户名口令???


 
后退
顶部