我已经尝试找出这个错误大约四天了。我正在使用 Delphi XE,并创建了一个小工具供翻译人员使用。我想到了使用 Microsoft Translation API 来帮助让事情变得更轻松并且不那么乏味。
我创建了一个访问 Microsoft 翻译器 API 的类,但我想使其成为线程安全的,以便可以在后台发出请求。我发送获取访问令牌的请求没有问题,但是,我在单独的线程中运行该请求。当用户单击按钮时,我会生成一个新线程并运行 http 请求来翻译其中的术语。然而,它每次都会超时。如果我从同一个线程运行它就没有问题。
这是我用于发送http请求的方法(传递的THttpCli对象在线程之间共享)
function sendHTTPRequest(APost: Boolean; AURI: UTF8string;
AContentType: UTF8string; APostData: UTF8String; AHttpCli: TSSLHttpCli): UTF8string;
var
DataOut: TMemoryStream;
DataIn: TMemoryStream;
lHTMLStream: TStringStream;
lencoding: TUTF8Encoding;
lownClient: boolean;
begin
lownClient := false;
if AHttpCli = nil then
begin
AHttpCli := TSSLHttpCli.Create(nil);
AHttpCli.SslContext := TSSLContext.Create(nil);
with AHttpCli.SslContext do
begin
SSLCipherList := 'ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH';
SSLVersionMethod := sslV23_CLIENT;
SSLVerifyPeerModes := [SslVerifyMode_PEER]
end;
AHttpCli.MultiThreaded := true;
lownClient := true;
end;
AHttpCli.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
if APost …Run Code Online (Sandbox Code Playgroud)