如何在TMS WEB Core的TWebHttpRequest中获取响应状态码
如何在TMS WEB Core的TWebHttpRequest中获取API响应状态码?
我正在使用TMS WEB Core中的TWebHttpRequest组件进行API调用,但不清楚如何获取响应的状态码(例如200=成功、403=禁止访问、404=未找到等)。
以下是我当前的调用代码:
procedure SendEmail(Sender, MailSubject, MailBody, recipients, cc: String); var Email: TWebHttpRequest; begin Email := TWebHttpRequest.Create(nil); Email.URL := 'MY_ENDPOINT_URL_FOR_SENDING_EMAIL...'; Email.Command := httpPOST; Email.Headers.Clear; Email.Headers.AddPair('Content-Type','application/json'); Email.PostData := '{' + '"Sender": "' + Sender + '",' + '"MailSubject": "' + MailSubject + '",' + '"MailBody": "' + MailBody + '",' + '"recipients": "' + recipients + '",' + '"cc": "' + cc + '"' + '}'; Email.Execute( procedure(AResponse: string; AReq: TJSXMLHttpRequest) begin Email.Free; end ); end;
解决方案
你可以直接通过Execute回调中的AReq参数(TJSXMLHttpRequest类型)获取响应状态码和相关信息:
AReq.status:返回数字类型的HTTP状态码(如200、403、404)AReq.statusText:返回对应状态码的文本描述(如"OK"、"Forbidden")
修改回调逻辑即可实现状态码的获取与处理:
Email.Execute( procedure(AResponse: string; AReq: TJSXMLHttpRequest) var StatusCode: Integer; StatusMsg: string; begin try StatusCode := AReq.status; StatusMsg := AReq.statusText; // 根据状态码处理不同业务场景 case StatusCode of 200: ShowMessage('邮件发送成功:' + AResponse); 403: ShowMessage('权限不足,无法发送邮件'); 404: ShowMessage('邮件服务端点未找到'); 500: ShowMessage('服务器内部错误:' + StatusMsg); else ShowMessage('请求失败,状态码:' + IntToStr(StatusCode) + ',信息:' + StatusMsg); end; finally Email.Free; end; end );
另外建议用try...finally包裹资源释放逻辑,避免异常场景下的内存泄漏。
内容的提问来源于stack exchange,提问作者Shaun Roselt
相关产品推荐
相关产品推荐

