IDHTTP使用时运行报错,高手请进! (20分)

  • 主题发起人 主题发起人 ttcx
  • 开始时间 开始时间
T

ttcx

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button9Click(Sender: TObject);
var url2:String;
s2,strm:TStringStream;
begin
url2:='xxxxxxxx';
s2:=TStringStream.Create('xxxxxxxxxx');
strm:=TStringStream.Create('');
IdHTTP1.Post(url2,s2,strm);
end;
编译正常通过
运行时报告 IdHTTP1.Post(url2,s2,strm) 出错
Debugger Exception Notification
Project Project1.exe raised exception class EIdProtocolReplyError with
message '405 Method not allowed',Process stopped.Use Step or Run to continue.
 
你的xxxxxxxxxxxxxx 写的不对吧
 
to ahxia
只是隐藏实际信息。。。
我开始用了nmhttp控件,格式稍微有差异,它能连上服务器并能发送成功,但服务器不能返回相应页面。通过sniffer我看到nmhttp没有把s2值传过去而是空值,根据正常页面提交的数据,可能是nmhttp支持http/1.0而服务器是支持http/1.1的。IdHTTP控件可指定协议为http/1.1或者http/1.0,所以我改用idhttp但是无法正常使用。如果我的这种理解有误请高手指出。如果有兴趣的我可以提供相应的源代码请你帮我修改。
 
'405 Method not allowed'是说服务器不接受你POST吧???
 
to honestman
应该不会是服务器不接受我的POST.我用IP包捕获器跟踪过,执行到
IdHTTP1.Post(url2,s2,strm); 我的HTTP请求尚未发出。而用
nmHttp 执行,无论POST方法的参数对错,IP包捕获器都能看到HTTP请求
能正常发出,对照通过网页发出的正确的HTTP请求数据包,差别在于---
前者用的是HTTP/1.0而且POST的参数并没有出现在HTTP请求的数据包中,所以
我想用IDHTTP应为它能支持HTTP/1.0和HTTP/1.1,我想看看是否是协议问题。
另:D6中Demo里的IDHTTP范列能编译通过,但运行也报
Debugger Exception Notification
Project Project1.exe raised exception class EIdProtocolReplyError with
message '405 Method not allowed',Process stopped.Use Step or Run to continue.
如果谁能正常运行该范例,请留QQ请教。
 
经过测试,证实D6 TidHTTP控件POST 数据格式与HTTP/1.1的格式无法匹配。
 
D6中的范例是正常的,接受答案。
 
后退
顶部