Delphi 为什么TIdHTTP可以';我得不到正确的结果,但邮递员可以

Delphi 为什么TIdHTTP可以';我得不到正确的结果,但邮递员可以,delphi,https,get,idhttp,Delphi,Https,Get,Idhttp,我在Delphi XE3中编写了一个函数,使用TIdHTTP从web获取一些数据。它不能得到正确的结果,但邮递员可以。使用浏览器也会正常返回数据 有人能帮忙吗 procedure-CreateHTTP(var-vHTTP:TIdHTTP;var-vSSL:tidssliohandlersocketopensl); 开始 vHTTP:=TIdHTTP.Create(nil); vSSL:=TIdSSLIOHandlerSocketOpenSSL.Create(vHTTP); vSSL.SSLOpt

我在Delphi XE3中编写了一个函数,使用
TIdHTTP
从web获取一些数据。它不能得到正确的结果,但邮递员可以。使用浏览器也会正常返回数据

有人能帮忙吗

procedure-CreateHTTP(var-vHTTP:TIdHTTP;var-vSSL:tidssliohandlersocketopensl);
开始
vHTTP:=TIdHTTP.Create(nil);
vSSL:=TIdSSLIOHandlerSocketOpenSSL.Create(vHTTP);
vSSL.SSLOptions.Method:=sslvTLSv1;
vSSL.SSLOptions.Mode:=sslmClient;
vHTTP.ProtocolVersion:=pv1_0;
vHTTP.HandleRedirects:=真;
vHTTP.IOHandler:=vSSL;
vHTTP.Request.UserAgent:=“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/76.0.3809.100 Safari/537.36”;
vHTTP.Request.ContentType:=“文本/普通”;
结束;
函数HttpGetData(vUrl:String):String;
变量
lIdHttp:TIdHTTP;
lSSL:TIdSSLIOHandlerSocketOpenSSL;
lDataStream:TStringStream;
lCode:整数;
开始
结果:='';
CreateHTTP(lIdHttp,lSSL);
lDataStream:=TStringStream.Create(“”,TEncoding.UTF8);
尝试
尝试
Get(vUrl,lDataStream);
lCode:=lIdHttp.ResponseCode;
结果:=lDataStream.DataString;
除了
关于E:EIdHTTPProtocolException do
开始
断开连接;
结束;
结束;
最后
断开连接;
lDataStream.Free;
lSSL.免费;
lIdHttp.Free;
结束;
结束;
lData:=HttpGetData('https://emh5.eastmoney.com/api/CaoPanBiDu/GetCaoPanBiDuPart1Get?fc=30023602&color=w');

我在这里看到这个站点需要TLS 1.2。起初,它在这里不起作用,但后来我将Indy更新为10.6.2,将ssleay32.dll和libeay32.dll更新为新版本,并且与TLS 1.2配合得很好。哦,我也更改了这里的代码

vSSL.SSLOptions.Method := sslvTLSv1_2; //sslvTLSv1;
vSSL.SSLOptions.SSLVersions := [sslvTLSv1_2];

我在这里看到这个站点需要TLS1.2。起初,它在这里不起作用,但后来我将Indy更新为10.6.2,将ssleay32.dll和libeay32.dll更新为新版本,并且与TLS 1.2配合得很好。哦,我也更改了这里的代码

vSSL.SSLOptions.Method := sslvTLSv1_2; //sslvTLSv1;
vSSL.SSLOptions.SSLVersions := [sslvTLSv1_2];

请包含请求失败时出现的实际错误消息以及错误消息。否则,如果实际响应和预期响应不同,请包括它们。是否引发异常?如果是,它说什么?什么是
ResponseCode
报告?为什么要使用
TStringStream
而不是使用返回
字符串的
Get()
版本?您确定服务器以UTF-8的形式发送数据吗?ResponseCode为200,没有引发异常,我还测试了Unicode、ANSI,相同的结果我的意思是URL(),其他URL正常,该URL在浏览器中也可用,但在idhttp组件中无效。您可以使用TRESTRequest。我可以给你举个例子,请包括当请求失败时出现的实际错误消息和错误消息。否则,如果实际响应和预期响应不同,请包括它们。是否引发异常?如果是,它说什么?什么是
ResponseCode
报告?为什么要使用
TStringStream
而不是使用返回
字符串的
Get()
版本?您确定服务器以UTF-8的形式发送数据吗?ResponseCode为200,没有引发异常,我还测试了Unicode、ANSI,相同的结果我的意思是URL(),其他URL正常,该URL在浏览器中也可用,但在idhttp组件中无效。您可以使用TRESTRequest。我可以给你举个例子,我用了ssleay32.dll(1.0.2.15),libeay32.dll(1.0.2.15),idhttp是10.6.2.5298,bug是无效的,但它无效我用了ssleay32.dll(1.0.2.15),libeay32.dll(1.0.2.15),idhttp是10.6.2.5298,bug是无效的