Tôi gặp sự cố khi đăng lên Dịch vụ SES của Amazon bằng TIdHTTP của Indy.Đăng sự cố với Indy TIdHTTP
Dưới đây là một ví dụ về mã tôi đang sử dụng:
procedure TMainFrm.btnAmazonSESClick(Sender: TObject);
var
SSLHandler: TIdSSLIOHandlerSocket;
HttpClient: TIdHTTP;
Params: TStringStream;
begin
SSLHandler := TIdSSLIOHandlerSocket.Create(Self);
HttpClient := TIdHTTP.Create(Self);
Params := TStringStream.create('');
try
with SSLHandler do
SSLOptions.Method := sslvSSLv3
with HttpClient do
begin
IOHandler := SSLHandler;
AllowCookies := True;
HandleRedirects := True;
HTTPOptions := [hoForceEncodeParams];
Request.ContentType := 'application/x-www-form-urlencoded';
end;
PageMemo.Text := HttpClient.Post('https://email.us-east-1.amazonaws.com?Action=VerifyEmailAddress&AWSAccessKeyId=012Some123Key46&[email protected]%2Ecom', Params);
finally
SSLHandler.Free;
HttpClient.Free;
Params.Free;
end;
end;
quả
Dưới Indy 10.5.7 Tôi nhận được lỗi: HTTP/1.1 404 Not Found
Theo Indy 9.0.14 Tôi gặp lỗi: Lỗi Socket # 11004
Debugging Trials
cùng bản demo này có thể GET thành công HTML từ một trang web HTTPS.
Nếu tôi dán URL ở trên vào trình duyệt, nó sẽ hiển thị kết quả XML mong đợi.
Tôi sẽ đánh giá cao mọi lời khuyên về nguyên nhân.
tôi tin rằng bạn cần của dll SSL trong cùng thư mục với ứng dụng hoặc trong thư mục system32 của cửa sổ ... hãy cho tôi biết nếu bạn muốn tôi tải lên những cái tôi có ở đâu đó, phiên bản của tôi là libeay32.dll 1.0.0.4 và ssleay32.dll 1.0.0.4 – ComputerSaysNo
Bạn không 'POST' bất kỳ' Params' nào, bạn có chắc chắn muốn liên lạc với webservice theo cách này không? –
@PrematureOptimization mọi thứ sau? là giá trị tên = param, trong trường hợp này Action = VerifyEmailAddress & AWSAccessKeyId = 012Some123Key46 & EmailAddress = test @ test% 2Ecom – ComputerSaysNo