我想用idhttp设置代理连接某服务器接口,所有的代理地址放在一个文本文件里
设置超时为3秒,3秒连不上或者3秒无返回,则自动读取文本里的下一个代理地址
自己写了下面这段代码,不知对不对,烦请各位大侠指点:proxylistnumber//文本里的代理地址的数量
proxylist是tstringlist,获取文本里的代理地址        for k :=0 to proxylistnumber-1 do
        begin
          idhttp1.ProxyParams.ProxyServer :=proxylist.Strings[k];
          idhttp1.ProxyParams.ProxyPort :=80;
          idhttp1.readtimeout :=3000;
          idhttp1.Connect;            try
              idhttp1.Get('url');            except
            
            end;            if idhttp1.ResponseCode=200 then  //如果未超时,就跳出循环,执行后面
            begin
              break;
            end
            else
            idhttp1.Disconnect;//如果超时,则继续读取文本里的下一个代理地址尝试
        end;不知我上面这么写代码对不对?烦请各位大侠看看上面的代码,是不是能实现我的意思呢?如果我写的不对,还望给个详细的代码。在此先谢了。

解决方案 »

  1.   

    设置好ProxyServer和ProxyPort,之后你现在要的是连接超时,所以需要设置的是ConnectTimeout,这个我在前面的贴子当中已经有回复过了。
    另外Connect需要先设置URI。所以你不能直接调用Connect,而是直接调用Get
      

  2.   

    其实接口就是个URL地址,我也不知道是不是要连接,可能直接3秒无返回就行了。
    麻烦给个代码吧
      

  3.   

    把你上面的那个ReadTimeOut改为ConnectTimeOut(最好是加一个),然后 再把Connect那一行去掉。
      

  4.   

    老兄,我用的D7,idhttp没有connecttimeout这个属性啊
      

  5.   

    从头到尾都没有说过你用的是D7(Indy9)^_^.Indy9的处理,还得你自己看一下,建议看源代码吧。我这里没办法帮你。全是Indy10(多个版本).
      

  6.   

    真晕了,D7就没人用多idhttp设置过代理连接么?
      

  7.   

    to unsigned :被逼无奈安装了indy10,按照5楼的改了,还是不对啊proxylistnumber//文本里的代理地址的数量 
    proxylist是tstringlist,获取文本里的代理地址         for k :=0 to proxylistnumber-1 do 
            begin 
              idhttp1.ProxyParams.ProxyServer :=proxylist.Strings[k]; 
              idhttp1.ProxyParams.ProxyPort :=80; 
              idhttp1.readtimeout :=3000;  
              idhttp1.connecttimeout :=3000; 
                try 
                  idhttp1.Get('url');             except 
                
                end;             if idhttp1.ResponseCode=200 then  //如果未超时,就跳出循环,执行后面 
                begin 
                  break; 
                end 
                else 
                idhttp1.Disconnect;//如果超时,则继续读取文本里的下一个代理地址尝试 
            end;        showmessage(proxylist.Strings[k]);//有代理地址能连上,就显示个信息结果还是没信息显示,怎么判断能不能连上啊?
      

  8.   

    你把ShowMessage放到break前试试。
      

  9.   

    还是不对啊,好像根本就不跳出
    用break不对?
      

  10.   

    究竟如何使用idhttp的代理功能啊?搜遍了百度,也没个完整的代码
    难道大家都没用过idhttp的代理连接么?