我在使用Indy的TIdHTTP向亚马逊的SES服务发布内容时遇到了问题。
以下是我使用的示例代码:
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&EmailAddress=test@test%2Ecom', Params);
finally
SSLHandler.Free;
HttpClient.Free;
Params.Free;
end;
end;
结果
在Indy 10.5.7下,我收到了错误:HTTP/1.1 404 Not Found。
在Indy 9.0.14下,我收到了错误:Socket Error # 11004。
调试尝试
相同的演示可以成功获取HTTPS网页的HTML。
如果我将上面的URL粘贴到浏览器中,它会显示预期的XML结果。
我希望能得到有关原因的任何建议。
POST
任何Params
,您确定要以这种方式与Web服务进行通信吗? - Premature Optimization