gpt4 book ai didi

delphi - Delphi 中的 Indy IdHttp、SSL 和代理

转载 作者:行者123 更新时间:2023-12-04 22:36:16 25 4
gpt4 key购买 nike

我用 印地 10.6.2 德尔福 7 .
我必须连接到 https 服务器。我使用这段代码:

FIdHTTP := TIdHTTP.Create(nil);
FIdHTTP.HandleRedirects := True;
FIdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
FIdSSL.SSLOptions.Mode := sslmClient;
FIdSSL.SSLOptions.SSLVersions := [sslvTLSv1_1,sslvTLSv1_2];
FIdHTTP.IOHandler := FIdSSL;

FIdHTTP.Request.Clear;
FIdHTTP.Request.ContentType := 'application/json';
FIdHTTP.Response.ContentType := 'application/json';
FIdHTTP.Request.CustomHeaders.Values['Authorization'] := 'Basic xxxxxxx==';
FIdHTTP.Post(zURL, zJsonStreamIn, zJsonStreamOut);
finally
zJSon := zJsonStreamOut.DataString;
end;
我们在局域网上有一个代理: http://proxy-client.xxxxx.fr Port : 8080我用 proxyparams :
FIdHTTP.ProxyParams.ProxyServer := 'http://proxy-client.in.ac-grenoble.fr';
FIdHTTP.ProxyParams.ProxyPort := 8080;
FIdHTTP.ProxyParams.BasicAuthentication := False;
然后我有错误 10001(找不到主机)但是当我不使用 proxyparams ,我有10060。
你有什么想法吗?
先感谢您。

最佳答案

TIdHTTP.ProxyParams.ProxyServer property 只需要一个主机名,而不是一个完整的 URL。更改此行:

FIdHTTP.ProxyParams.ProxyServer := 'http://proxy-client.in.ac-grenoble.fr';
为此:
FIdHTTP.ProxyParams.ProxyServer := 'proxy-client.in.ac-grenoble.fr';

附带说明:
您不需要以下行,因此您应该完全删除它们:
FIdHTTP.Request.Clear;
FIdHTTP.Response.ContentType := 'application/json';
FIdHTTP.Request.CustomHeaders.Values['Authorization'] := 'Basic xxxxxxx==';
TIdHTTP内置支持 Basic验证。只需设置 TIdHTTP.Request.UsernameTIdHTTP.Request.Password属性,并设置 TIdHTTP.Request.BasicAuthorization属性(property)给 True .
此外,如果您希望响应数据为 string , TIdHTTP.Post()为此目的有一个重载:
zJson := IdHTTP.Post(zURL, zJsonStreamIn);
但无论哪种方式,调用 TIdHTTP.Post()try..finally有利于清理,但如果发生 HTTP 错误,您的 zJson默认情况下不会接收任何数据。如果您需要 HTTP 错误的响应正文,您将需要:
  • 捕捉结果EIdHTTPProtocolException并分配其ErrorMessage属性(property)到您的zJson多变的。
  • 启用 hoNoProtocolErrorExceptionhoWantProtocolErrorContent TIdHTTP.HTTPOptions 中的标志属性,然后 zJson将平等地接收成功和失败响应机构。
  • 关于delphi - Delphi 中的 Indy IdHttp、SSL 和代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71295790/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com