Delphi 11社区版中THTTPReqResp的CheckContentType方法是否存在?
关于Delphi 11社区版中CheckContentType方法的疑问解答
CheckContentType并非Delphi 11社区版的限制功能,问题根源在于THTTPReqResp类本身不存在公开的CheckContentType方法。
你提到原程序能正常编译运行,大概率是因为原项目中通过**类扩展(Class Helper)**或者自定义补丁单元,给THTTPReqResp类添加了这个方法,而你当前的项目中缺少了对应的扩展代码或单元引用。
代码问题验证
你当前引入的都是Delphi自带的标准SOAP相关单元,其中Soap.SOAPHTTPTrans.pas里的THTTPReqResp确实没有定义CheckContentType方法,所以编译器会提示E2003 Undeclared identifier。
解决方法
查找原项目的扩展单元
检查原项目的代码库,是否存在类似SOAPHTTPTrans.Helper.pas这类自定义单元,将其添加到你的uses列表中。自行实现对应逻辑
如果找不到原扩展代码,可以直接通过THTTPReqResp的Response.ContentType属性实现相同的验证逻辑,示例代码如下:procedure CheckContentType(const AHTTPReqResp: THTTPReqResp); begin // 验证Content-Type是否为SOAP请求预期的类型 if not SameText(AHTTPReqResp.Response.ContentType, 'text/xml') and not SameText(AHTTPReqResp.Response.ContentType, 'application/soap+xml') then begin raise Exception.CreateFmt('无效的Content-Type: %s', [AHTTPReqResp.Response.ContentType]); end; end;使用时直接调用这个自定义过程即可替代原来的
HTTPReqResp1.CheckContentType。
补充说明
Delphi 11社区版和付费完整版在SOAP核心组件的功能上没有差异,不存在该方法被限制使用的情况。
内容的提问来源于stack exchange,提问作者BosnianFlajter2
相关产品推荐
相关产品推荐

