idHttp.get() 下载网页源码出错 50分送上

imho888 2009-02-24 10:40:23
idHttp.get()
为什么其它网页都可以打开,偏偏这个网页打不开呢:http://beijing.baixing.com/girlfriend/a31378556.html
不知道为什么

希望知道的人告知,非常感谢 50分送上
...全文
169 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
imho888 2009-02-24
  • 打赏
  • 举报
回复
我把Indy9.0.18 安装目录下的dcu 全部拷贝到delphi/lib 和debug 目录下,覆盖原来的文件,好像还是不行,怎么才能把原来的全部删掉呢,难道我从盒子上下的Indy9.0.18不行?
imho888 2009-02-24
  • 打赏
  • 举报
回复
恩,确认可以,看来我要把原来的Indy删干净
hidelphi 2009-02-24
  • 打赏
  • 举报
回复
ftp://uploads@uploads.2ccc.com/
imho888 2009-02-24
  • 打赏
  • 举报
回复
给个下载地址啊,我没找到Ftp
hidelphi 2009-02-24
  • 打赏
  • 举报
回复
Delphi 盒子FTP里面的这个文件testIndy090224.rar,先看效果,代码就是上面的了,你版本应该卸载的不完全,DCU文件还是旧的
hidelphi 2009-02-24
  • 打赏
  • 举报
回复
你以前的版本卸载完全了吗?所有的Indy原Dcu文件删除掉,
imho888 2009-02-24
  • 打赏
  • 举报
回复
我在D7装了Indy9.0.18,结果还是一样.不知道你为什么没问题的
bdmh 2009-02-24
  • 打赏
  • 举报
回复
升级吧
hidelphi 2009-02-24
  • 打赏
  • 举报
回复
那是Indy版本问题,换版本,你的Indy版本很低了,为什么不换,低的版本BUG很多,最新的Indy10.2.3
imho888 2009-02-24
  • 打赏
  • 举报
回复
我的是9.00.10
imho888 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hidelphi 的回复:]
Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);
var
FHTTP:TIdHTTP;
begin
FHTTP:=TIdHTTP.Create(nil);
try
Memo1.Text:=UTF8Decode(FHTTP.Get('http://beijing.baixing.com/girlfriend/a31378556.html '));
finally
FreeAndNil(FHTTP);
end;
end;



调试环境:Indy9.0.18+Delphi 7,测试通过,只不过返回的数据要UTF8解码
[/Quote]

我也是delphi7 Indy版本不明,老是弹出错误'HTTP/1.1 509 Bandwidth Limit Exceeded'

用你的代码也一样
hidelphi 2009-02-24
  • 打赏
  • 举报
回复

procedure TForm1.Button1Click(Sender: TObject);
var
FHTTP:TIdHTTP;
begin
FHTTP:=TIdHTTP.Create(nil);
try
Memo1.Text:=UTF8Decode(FHTTP.Get('http://beijing.baixing.com/girlfriend/a31378556.html '));
finally
FreeAndNil(FHTTP);
end;
end;

调试环境:Indy9.0.18+Delphi 7,测试通过,只不过返回的数据要UTF8解码
bdmh 2009-02-24
  • 打赏
  • 举报
回复
不是所有东西都能完整下下来的,即使下下来,也未必能用
imho888 2009-02-24
  • 打赏
  • 举报
回复
为什么idhttp.get 就是不行呢,晕死
imho888 2009-02-24
  • 打赏
  • 举报
回复
非常感谢.
hidelphi 2009-02-24
  • 打赏
  • 举报
回复

procedure TForm1.Button2Click(Sender: TObject);
function InitSocket: TSocket;
var
m_wsData: TWSAData;
begin
WSAStartUp(MAKEWORD(2, 2), m_wsData);

Result:= Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
end;
function FormatHead(Method, SvrIP: string; strURL: string; SvrPort: integer): string;
begin
Result:= Method + ' /'+ strURL +' HTTP/1.1'#13#10; //Get Head
Result:= Result + 'Referer: http://' + SvrIP;

if SvrPort <> 80 then
Result:= Result + ':' + IntToStr(SvrPort);

Result:= Result + '/' + strURL + #13#10;
Result:= Result + 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'#13#10;
Result:= Result + 'Host: ' + SvrIP;

if SvrPort <> 80 then
Result:= Result + ':' + IntToStr(SvrPort);

Result:= Result + #13#10;
Result:= Result + 'Accept: */*'#13#10;
Result:= Result + 'Connection: Close'#13#10;
Result:= Result + 'Cache-Control: no-cache'#13#10;

Result:= Result + #13#10;
end;
var
addr : sockaddr_in;
pHost : pHostEnt;
Sock: TSocket;
strTmp:string;
strBuf: array[0..1023] of Char;
intLen: integer;
begin
Sock:= InitSocket;
if Sock = INVALID_SOCKET then Exit;

pHost:= GetHostByName(PChar('beijing.baixing.com'));
if pHost = nil then Exit;
FillChar(addr, SizeOf(addr), 0);
addr.sin_family:= AF_INET;
addr.sin_Port := htons(80);
addr.sin_addr.S_addr:= PDWORD(PDWORD(pHost.h_addr)^)^;
if Connect(Sock, addr, SizeOf(addr)) = SOCKET_ERROR then
begin
ShowMessage('Socket Error:' + IntToStr(WSAGetLastError));
Exit;
end;
strTmp:= FormatHead('GET', 'beijing.baixing.com', 'http://beijing.baixing.com/girlfriend/a31378556.html', 80);
Send(Sock, PChar(strTmp)^, Length(strTmp), 0);
strTmp:='';
while True do
begin
FillChar(strBuf, 1024, #0);
intLen:= Recv(Sock, strBuf, 1024, 0);
SetString(strTmp, strBuf, 1023);
Memo1.Lines.Add(UTF8Decode(strTmp));
if intLen < 1 then Break;
end;
CloseSocket(Sock);
WSACleanUp();
end;
hidelphi 2009-02-24
  • 打赏
  • 举报
回复
算了,你改用Socket请求吧,自己构造HTTP头
imho888 2009-02-24
  • 打赏
  • 举报
回复
换成了indy10还是有问题,一样的问题
我删除了delphi lib下的indy的dcu 删除bpl 下的indy 的bpl
重装,还是有问题,晕死了

5,388

社区成员

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

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