使用TIDHTTP控件的Get、Put、Post方法时,如果服务器返回的HTTP状态码不是200,默认触发异常,获取服务器返回的信息有两种方式:
1、使用try except end获取服务器返回的信息,
objResponse := TStringStream.Create('', TEncoding.UTF8);
//
try
objIdHttp.post(URL, TStringStream.Create(json, TEncoding.UTF8),
objResponse);
strResponse := objResponse.DataString;
except
on E:EIdHTTPProtocolException do
begin
strResponse := E.ErrorMessage;
end;
end;
2、修改TIDHTTP的HTTPOptions属性,增加 hoWantProtocolErrorContent 选项,增加选项后,状态码不是200时,将不再触发异常,通过 ResponseCode 获取状态码,同时可正常获取服务器返回的信息
var
IdHTTP: TIdHTTP;
begin
IdHTTP := TIdHTTP.Create();
try
IdHTTP.HTTPOptions := IdHTTP.HTTPOptions + [hoNoProtocolErrorException, hoWantProtocolErrorContent];
Writeln(IdHTTP.ResponseText);
Writeln;
Wri