IDHttp的proxy参数设定的是http代理.
但我现在想使用socks5代理.
用如下代码测试的,但总是会出现错误:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, IdSocks, IdIOHandler, IdIOHandlerSocket;type
TForm1 = class(TForm)
Edit1: TEdit;
mmoShow: TMemo;
Button1: TButton;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
idhttp: TIdHTTP;
sockinfo1: TIdSocksInfo;
idio1: TIdIOHandlerSocket;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
strGet :String;
begin
idhttp.HandleRedirects := true;
strGet := idhttp.Get('http://www.ip138.com/ip2city.asp'); if (Length(strGet) > 1) then
mmoShow.Text := strGet; application.ProcessMessages(); idhttp.IOHandler := idio1; idio1.SocksInfo.Version := svSocks5;
idio1.SocksInfo.Host := '203.142.18.123';
idio1.SocksInfo.Port := 123;
idio1.SocksInfo.Username := '123';
idio1.SocksInfo.Password := '123';
idio1.SocksInfo.Authentication := saUsernamePassword;
strGet := idhttp.Get('http://www.ip138.com/ip2city.asp'); if (Length(strGet) > 1) then
mmoShow.Text := mmoShow.Text + strGet + #13#10 + 'END';
end;procedure TForm1.FormCreate(Sender: TObject);
begin
idhttp := TIdHTTP.Create(self);
sockinfo1 := TIdSocksInfo.Create(self);
idio1 := TIdIOHandlerSocket.Create(self);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
if (IdHTTP <> nil) then
IdHTTP.Free;
end;end.
结果在设定代理之后的
strGet := idhttp.Get('http://www.ip138.com/ip2city.asp');时,总是出现异常,读取某地址有问题.
请问,这是indy的错误还是我的错误.idhttp控件要使用socks代理应该如何设置?
但我现在想使用socks5代理.
用如下代码测试的,但总是会出现错误:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, IdSocks, IdIOHandler, IdIOHandlerSocket;type
TForm1 = class(TForm)
Edit1: TEdit;
mmoShow: TMemo;
Button1: TButton;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
idhttp: TIdHTTP;
sockinfo1: TIdSocksInfo;
idio1: TIdIOHandlerSocket;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
strGet :String;
begin
idhttp.HandleRedirects := true;
strGet := idhttp.Get('http://www.ip138.com/ip2city.asp'); if (Length(strGet) > 1) then
mmoShow.Text := strGet; application.ProcessMessages(); idhttp.IOHandler := idio1; idio1.SocksInfo.Version := svSocks5;
idio1.SocksInfo.Host := '203.142.18.123';
idio1.SocksInfo.Port := 123;
idio1.SocksInfo.Username := '123';
idio1.SocksInfo.Password := '123';
idio1.SocksInfo.Authentication := saUsernamePassword;
strGet := idhttp.Get('http://www.ip138.com/ip2city.asp'); if (Length(strGet) > 1) then
mmoShow.Text := mmoShow.Text + strGet + #13#10 + 'END';
end;procedure TForm1.FormCreate(Sender: TObject);
begin
idhttp := TIdHTTP.Create(self);
sockinfo1 := TIdSocksInfo.Create(self);
idio1 := TIdIOHandlerSocket.Create(self);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
if (IdHTTP <> nil) then
IdHTTP.Free;
end;end.
结果在设定代理之后的
strGet := idhttp.Get('http://www.ip138.com/ip2city.asp');时,总是出现异常,读取某地址有问题.
请问,这是indy的错误还是我的错误.idhttp控件要使用socks代理应该如何设置?
解决方案 »
- 关于三层的一个问题,有劳各位看看..谢谢
- 如何在程序中复制IE临时目录下的文件(如:C:\Documents and Settings\myname\Local Settings\Temporary Internet Files)
- 怎么不通过编译器把.c文件转换为.bin文件
- 请问两部计算机怎样通过ADSL进行远程通讯?
- 求TDCOMCONNECTION的使用方法(含注册)
- 急!如何添加组件啊!!!
- 如何同时更新两个表?
- 关于quickreport的小问题
- 我们要成立同盟,反对“语言”歧视?
- 如何用Delphi编制一个支持服务器认证的Smtp邮件程序?
- winhttp---winhttpcertcfg造成的困惑
- Tparrms用法
begin
IdHTTP1.ProxyParams.ProxyServer:='172.20.100.4';
IdHTTP1.ProxyParams.ProxyUsername:='mis-jufei';
IdHTTP1.ProxyParams.ProxyPassword:='1234';
IdHTTP1.ProxyParams.ProxyPort:=808;
end;
对啊..我现在的做法就是这样的啊.....
上面的代码就是这样写的......
但是运行的时候会出现一个内存读取异常.......
我用的是delphi 7 + indy 10
不知道你有没有遇到过?
strGet := idhttp.Get('http://www.ip138.com/ip2city.asp');
时,出现read 0000000内存异常....无法跟进去......
indy的具体版本号是:indy10.0.52_d7我贴子里的代码就是用TIdIOHandlerSocket和 TIdSocksInfo组件的......
才出来了这个异常..如果用http代理,使用你这个代码是完全没问题的. ..我试过了...
我现在从网上下载好像没有单儿的indy9下载
我测试的就是Delphi 7自带的Indy。
依然是indy10的read异常......兄弟能不能把你的代码发上来我看一下!是不是我的哪一步漏了。
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
idhttp: TIdHTTP;不知道为什么有两个tidhttp