使用IdHttp访问Https网址时,要加一个IdSSLIOHandlerSocket控件,设置idhttp的IOHandler属性为IdSSLIOHandlerSocket控件。
procedure TForm1.Button1Click(Sender: TObject);
var
RData_TreatPost:string;
FormParam:TStrings;
begin
FormParam:=TStringList.Create;
。。。。。。。。。。。。。。。。
FormParam.Add('minititle=');
FormParam.Add('minipara=');
FormParam.Add('pstrong=');
FormParam.Add('longLogin=1');
FormParam.Add('llnick=');
FormParam.Add('sign=');
FormParam.Add('need_sign=');
FormParam.Add('not_duplite_str=');
FormParam.Add('need_user_id=');
FormParam.Add('from_encoding=');
RData_TreatPost:='https://login.taobao.com/member/login.jhtml';
Memo1.clear;
HtmlEdit1.HTML:=(IdHTTP1.Post(RData_TreatPost,FormParam));
Memo1.Lines.Add('OK');
FormParam.Free;
end;
可能出现的错误:
1、stock error 1004#: 类似错误是因为网络问题,组件打不开相关网址引起。所以要检查下你的电脑网络,在IE中访问试下能否打开相关的网址。
2、http1.1 ,HTTP500内部错误:类似错误是因为Idhttp.Post后面的参数内容出错,格式不符合网站的要求引起,如 FormParam.Add('longLogin=1&'); 正常如上段代码,但这里却画蛇添足,加多了一个&. 如此之类。
3、can't load ssl library:类似错误是因为缺少两个DLL,使用SSL时,要在当前目录下放两个OPENSSL的DLL,分别是libeay32.dll和ssleay32.dll,而且它们有版本要求,不同的indy版本对应不同的DLL版本,虽然DLL名字一样。