【问题标题】:Delphi/Indy10 How to check an https URL is valid without downloading contentsDelphi/Indy10 如何在不下载内容的情况下检查 https URL 是否有效
【发布时间】:2018-05-01 01:34:30
【问题描述】:

以前我需要检查的 URL 是 http,我使用 TidTCPClient 模拟 http 协议来确定 Web 服务器上的文件是否存在。现在他们已经切换到https,我不知道该怎么做。

我可以将 TIdHTTP 与 TIdSSLIOHandlerSocketOpenSSL 处理程序一起使用,然后使用一些 Indy 函数来仅确定资源是否存在?我已经安装了 OpenSSL。

【问题讨论】:

    标签: delphi delphi-7 indy indy10


    【解决方案1】:

    如果您只需将TIdSSLIOHandlerSocketOpenSSL 分配给客户端的IOHandler,将客户端的Port 更改为443,并将IOHandler 的PassThrough 设置为False,您现有的TIdTCPClient 代码应该可以继续工作。 HTTPS 只是基于 SSL/TLS 连接的 HTTP,它不会改变 HTTP 本身。

    但要回答你的问题,是的,如果你愿意,你可以切换到TIdHTTP。您可以使用 HTTP HEAD 命令(TIdHTTP.Head() 方法)来检查 URL 是否有效,而无需下载完整资源。

    【讨论】:

    • 我记得最初尝试过 Head,但它在此服务器上无法正常工作,因此实现了我自己的解决方案。我没有意识到 SSL 是在 TCP 级别实现的。现在可以了,谢谢。
    • @Ross HEAD 旨在用于可通过GET 访问的任何资源。虽然如果资源是动态生成的,结果将是不可预测的。
    猜你喜欢
    • 2022-01-23
    • 2013-04-12
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多