Delphi的idhttp報IOHandler value is not valid錯誤的緣由[轉]

 出現這種問題的緣由是因爲訪問的 URL地址爲https或存在其跳轉地址爲https。cookie

首先單純使用idhttp是隻能訪問http,而https則須要搭配IdSSLIOHandlerSocketOpenSSL來實現對https的訪問支持,固然還須要在系統目錄或編譯目標程序的同目錄下有ssleay32.dll與libeay32.dll兩個SLL協議的支持庫。spa

下面貼出一個簡單示例,但對於須要管理cookie的天然要繼續完善idhttp的其餘項設置,尤爲是有些https站是屏蔽直接使用IdCookieManager的。.net

function TMyHttp.SSLGetS(URL: string): string;
var
  Http: TIdhttp;
  SSLIO: TIdSSLIOHandlerSocketOpenSSL;
begin
  Http := TIdHttp.Create(nil);
  Http.ProtocolVersion := pv1_1;
  Http.HandleRedirects := True;
  SSLIO := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  SSLIO.SSLOptions.Method:=sslvTLSv1;
  SSLIO.SSLOptions.Mode := sslmClient;
  try
    try
      Http.IOHandler:=SSLIO;
      Result := Http.Get(URL);
    except
      Result := '';
    end;
  except
 
  end;
  Http.Disconnect;
  FreeAndNil(SSLIO);
  FreeAndNil(Http);
end;

我使用的是Delphi 2007,它最高僅支持Indy10.2.3版本,搭配前面提到的兩個OpenSLL Shared Library 1.0.1.5(1.0.1.e)版本文件。code

轉自:https://blog.csdn.net/huohuotu/article/details/77337087blog

相關文章
相關標籤/搜索