急!!!!! 用TNMHTTP如何得到CGI返回的数据?(200分)

  • 主题发起人 主题发起人 abc2000
  • 开始时间 开始时间
A

abc2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我在IE里直接键入CGI地址,返回值是对的,
但在TNMHTTP里,post到CGI是成功的,但就是收不到返回值。
不知道是出什么问题了。
我已经把Inputfilemode设为了false;
 
代码贴出来.
 
to Cakk
不错,就是有人在改网页,莫非是yysun?
上回的那个问题也被解决了。而且整个网页的字体也变大了。
不知你注意到没有,大富翁的主页也与以往不同了。
 
已经收到了post成功的消息,但始终收不到返回的数据!
function TfrmLogin.Login(UserID, Passwd: string): boolean;
begin
if frmVPMain.NMHTTP1.Connected then
begin
MessageDlg('网络不通或服务器无法连接,登陆失败!',mtInformation,[mbOK],0);
Result := False;
end;
NMHTTP1.post('http://server/login',UserID+Passwd);
result := true;
end;

procedure TfrmLogin.NMHTTP1PacketRecvd(Sender: TObject);
begin
ShowMessage(NMHTTP1.body);
end;

procedure TfrmLogin.NMHTTP1Success(Cmd: CmdType);
begin
if cmd=cmdpost then
ShowMessage('成功');
end;

 
是不是你的CGI程序有问题,
用浏览器试一试?
 
Jams: 网页有变化吗? 我怎么没看出来? 字体没有变化呀?
abc2000: 你的程序搞得太复杂,http控件好像不支持异步操作,必需get/post
完成之后才能得到body的值.
而且,监测connected似乎没有必要,因为她总是在get/post的时候
自动连接,完毕后自动断开的.:
上面代码简化如下:
NMHTTP1.post('http://server/login',UserID+Passwd);
showmessage(NMHTTP1.body);
 
用浏览器能显示返回值。
但用TNMHTTP的post的就不行,用get也不行。
 
不是说了吗? 只有get/post结束之后才能得到body的内容.
 
与异步没有什么关系,这是tnmhttp控件的一个bug
如果返回的值太少,那么就收不到数据,必须把cgi
的返回数据大于4个byte就行了.
 
谢谢!delphi大辣呀!问题已经解决了!
 

Similar threads

回复
0
查看
978
不得闲
回复
0
查看
863
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部