lst := TStringList.Create;
    RespData := TStringStream.Create('');
    idhtp1 := TIdHTTP.Create(nil);
    str_1 := 'http://www.hik-online.com/minjuyangtai';
    idhtp1.Post(str_1, RespData);
    idhtp1.Request.Referer := str_1;
    reStr := RespData.DataString ;这样吗?  好像卡住了

解决方案 »

  1.   

    你的目的是不是只要得到一个网站的IP?
    function TForm1.GetIPFromHost(const Name: string): string;
    var
      wsdata: TWSAData;
      hostName: array[0..255] of char;
      hostEnt: PHostEnt;
      addr: PChar;
    begin
      WSAStartup($0101, wsdata);
      try
        gethostname(hostName, sizeof(hostName));
        StrPCopy(hostName, Name);
        hostEnt := gethostbyname(hostName);
        if Assigned(hostEnt) then
          if Assigned(hostEnt^.h_addr_list) then
          begin
            addr := hostEnt^.h_addr_list^;
            if Assigned(addr) then
            begin
              Result := Format('%d.%d.%d.%d', [byte(addr[0]),
                byte(addr[1]), byte(addr[2]), byte(addr[3])]);
            end
            else
              Result := '';
          end
          else
            Result := ''
        else
        begin
          Result := '';
        end;
      finally
        WSACleanup;
      end
    end;// 调用
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit2.Text := GetIPFromHost(Edit1.Text);
    end;
      

  2.   

    上面的不要了,改下面的,传入一个URL
    uses WinSock, IdHTTP;function TForm1.GetIPFromUrl(const Url: string): string;
    var
      wsdata: TWSAData;
      hostName: array[0..255] of char;
      hostEnt: PHostEnt;
      addr: PChar;
      idhtp1: TIdHTTP;
    begin
      Result := '';
      WSAStartup($0101, wsdata);
      idhtp1 := TIdHTTP.Create(nil);
      try
        idhtp1.Get(Url, nil);
        gethostname(hostName, sizeof(hostName));
        StrPCopy(hostName, idhtp1.Host);
        hostEnt := gethostbyname(hostName);
        if Assigned(hostEnt) then
          if Assigned(hostEnt^.h_addr_list) then
          begin
            addr := hostEnt^.h_addr_list^;
            if Assigned(addr) then
            begin
              Result := Format('%d.%d.%d.%d', [byte(addr[0]),
                byte(addr[1]), byte(addr[2]), byte(addr[3])]);
            end
            else
              Result := '';
          end
          else
            Result := '';
      finally
        WSACleanup;
        idhtp1.Free;
      end
    end;
      

  3.   

    这个是为了解析一个ddns的IP, 比如http://www.hik-online.com/minjuyangtai这个地址, 输入后会跳转成http://113.120.135.232/这个ip, 需要取得返回的这个ip
      

  4.   

    真是麻烦哦,上面你按着思路改改嘛
    如果要处理重定向,给idhtp1.HandleRedirects:=true
    uses WinSock, IdHTTP;function TForm1.GetIPFromUrl(const Url: string): string;
    var
      wsdata: TWSAData;
      hostEnt: PHostEnt;
      addr: PChar;
      idhtp1: TIdHTTP;
    begin
      Result := '';
      WSAStartup($0101, wsdata);
      idhtp1 := TIdHTTP.Create(nil);
      try
        idhtp1.HandleRedirects := true;  // 启用处理重定向
        idhtp1.Get(Url, nil);
        hostEnt := gethostbyname(PChar(idhtp1.Host));
        if Assigned(hostEnt) then
          if Assigned(hostEnt^.h_addr_list) then
          begin
            addr := hostEnt^.h_addr_list^;
            if Assigned(addr) then
            begin
              Result := Format('%d.%d.%d.%d', [byte(addr[0]),
                byte(addr[1]), byte(addr[2]), byte(addr[3])]);
            end
            else
              Result := '';
          end
          else
            Result := '';
      finally
        WSACleanup;
        idhtp1.Free;
      end
    end;