Delphi 从列表框中选择代理(IDHTTP)

Delphi 从列表框中选择代理(IDHTTP),delphi,proxy,listbox,idhttp,Delphi,Proxy,Listbox,Idhttp,我正在准备申请。IDHTTP:使用Get方法。但也存在一些问题。我想创建一个代理列表,然后单击列表框项(代理地址)IDHTTP added。对不起,我不懂英语 我的代码 procedure TForm1.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked then begin LabeledEdit1.Enabled:= true; LabeledEdit2.Enabled:= true; IdHTTP1.ProxyParams

我正在准备申请。IDHTTP:使用Get方法。但也存在一些问题。我想创建一个代理列表,然后单击列表框项(代理地址)IDHTTP added。对不起,我不懂英语

我的代码

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
begin
LabeledEdit1.Enabled:= true;
LabeledEdit2.Enabled:= true;
IdHTTP1.ProxyParams.ProxyServer:=LabeledEdit1.Text;
IdHTTP1.ProxyParams.ProxyPort:=StrToInt(LabeledEdit2.Text);

CheckBox1.Caption:='Kendi IP adresimi kullan.';

 end
 else
begin

LabeledEdit1.Enabled:= false;
LabeledEdit2.Enabled:= false;
IdHTTP1.ProxyParams.ProxyServer:='';
IdHTTP1.ProxyParams.ProxyPort:=StrToInt('0');

CheckBox1.Caption:='Proxy kullan.';

end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
IdHTTP1.Get(Edit1.Text);
MessageDlg('Mission complated.', mtinformation,[mbOK],0);
end;
我想要

我添加Listbox1代理。。以后。。单击列表框1项。以后。。BitBtn2点击

谢谢

Listbox1.Items.Add('1.1.x.2.1:80');
Listbox1.Items.Add('1.2.x.x.5:60');
...


您已经具备了将代理分配给
TIdHTTP
所需的逻辑,那么您遇到的实际问题是什么?在分配代理信息时,只需将代码更改为使用
TListBox
而不是
TLabeledEdit
。@RemyLebeau,我认为问题在于如何将所有可用的代理服务器添加到列表框中,并允许用户从该列表框中选择
TIdHTTP.ProxyParams
中使用的代理服务器。代理服务器有很多。1.1.x.2.1:80,1.2.x.x.5:60。。。。。作为。。为了避免一个接一个?Listbox1.itemadd(代理+:+端口)为?。。。抱歉..IdHTTP1.ProxyParams.ProxyServer和ProxyPort:=Listbox1.item[1]合并?谢谢,但是。。[Error]Unit1.pas(139):未声明的标识符:“Fetch”Error?@user1424940您基本上以“ip:port”的形式解析字符串,因此您需要获取ip,即“:”之前的部分,然后是“:”之后的部分”,据我所知,Fetch获取“:”之前的所有内容,并将“:”之后的部分保留在“:”之后,同时转储它,这是一个很好的练习,你可以自己做。我添加了IdGlobal用法。问题解决了。如果出现错误407,则showmessage()?
TIdHTTP
在内部处理407。它将根据需要触发
OnSelectProxyAuthorization
OnProxyAuthorization
事件,直到尝试次数达到
MaxAuthRetries
为止。如果出现任何其他HTTP错误,或者到达
MaxAuthRetries
,则
TIdHTTP
将引发一个异常,您可以在代码中捕获该异常。
procedure TForm1.Listbox1Click(Sender: TObject); 
var
  I: Integer;
  S: String;
begin 
  I := Listbox1.ItemIndex;
  if I <> -1 then
  begin 
    S := Listbox1.Items[I];
    IdHTTP1.ProxyParams.ProxyServer := Fetch(S, ':'); 
    IdHTTP1.ProxyParams.ProxyPort := StrToInt(S); 
  end 
  else 
  begin 
    IdHTTP1.ProxyParams.ProxyServer := ''; 
    IdHTTP1.ProxyParams.ProxyPort := 0; 
  end; 
end; 
procedure TForm1.BitBtn2Click(Sender: TObject);        
begin        
  IdHTTP1.Get(Edit1.Text);        
  MessageDlg('Mission complated.', mtinformation,[mbOK],0);        
end;