私はIndyを使用してURLアドレスからJSONを取得しています。私のコードはTIdSSLIOHandlerSocketOpenSSL
をIOHandler
としてTIdHTTP
として使用しています。 URLはhttps://www.example.com
、http://www.example.com
簡単ではありませんSSLがない場合のIOHandlersの相違
var IdHTTP: TIdHTTP;
IdSSL: TIdSSLIOHandlerSocketOpenSSL; // IO handler #1
IdnoSSL: TIdIOHandlerStack; // IO handler #2
JSON: String;
ハンドラとしてSSLを使用するためにいくつかの理由がある場合、私は、興味、?
begin
IdHTTP := TIdHTTP.Create;
try
IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
IdHTTP.IOHandler := IdSSL;
// IdnoSSL:= TIdIOHandlerStack.Create(IdHTTP);
// IdHTTP.IOHandler := IdnoSSL;
JSON := IdHTTP.Get('http://www.example.com');
finally
IdHTTP.Free;
end;
end;
または私はTIdSSLIOHandlerSocketOpenSSL
を削除し、TIdIOHandlerStack
でnoSSLを使うべきなのでしょうか?
ヘルプやアドバイスが必要です。
ありがとうございます。 HTTPにアクセスするための 'IOHandler'を割り当てようとせず、' EIdIOHandlerPropInvalid'例外も取得しました。だから私はそこに 'IdSSL'を残しました。 – Legionar
Hmm ..私は別のコンピュータで試してみましたが、Delphiがインストールされておらず、例外は 'EIdOSSLCouldNotLoadSSLLibrary'でした。だから私はいくつかのSSLライブラリを私のアプリに含める必要がありますか?手伝ってくれてありがとう。 – Legionar
@Legionar ** only ** way 'EIdIOHandlerPropInvalid'は、' SSLIOHandler'が割り当てられていないHTTPS urlが要求された場合に発生します。 HTTP URLがHTTPS URLへのリダイレクトを送り返している必要があります。そして、もしあなたが 'TIdSSLIOHandlerSocketOpenSSL'を使っているなら、あなたのアプリケーションに[OpenSSL library](http://indy.fulgan.com/SSL/)を配備する必要があります。 –