如何添加/使用THTTPReqResp重写HTTP头?(How to add/overwrite a

2019-07-03 18:20发布

我想办法在Exchange EWS Web服务和XML处理SOAP组成(请求)和解析(响应)自己。 因此,THTPPRIO似乎有点矫枉过正。

我想THTTPReqResp,但我被困在这里:

该网站的服务不符合规范并预期

Content-Type: text/xml; charset=utf-8

代替

Content-Type: text/xml; charset="utf-8"

我如何添加/使用THTTPReqResp覆盖一个头? 这里是到目前为止的代码:

HTTPReqResp1.SoapAction := '"http://schemas.microsoft.com/exchange/services/2006/messages/ResolveNames"';
// HTTPReqResp1.UseUTF8InHeader := true; // Already
HTTPReqResp1.URL := 'https://webmail.mailserver.nl/ews/exchange.asmx';
HTTPReqResp1.Execute(TSRequest,TSResponse);

发生在执行Content-Type的错误(或者,如果我使用的发送/接受她,而不是执行接收)

BTW如果THTTPReqResp是不正确的方式,意见是值得欢迎的。 我也想TidHTTP,看到这个帖子 。

德尔福XE2更新4印第10.5.8.0

由于扬

Answer 1:

我找到了:

procedure TForm1.BeforeRRPost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
const
   cContentHeader = 'Content-Type: text/xml; charset=utf-8';
begin
   HttpAddRequestHeaders(Data, PChar(cContentHeader), Length(cContentHeader), HTTP_ADDREQ_FLAG_REPLACE);
// Or  HttpAddRequestHeaders(Data, PChar(cContentHeader), Length(cContentHeader), HTTP_ADDREQ_FLAG_ADD);
end;

然后前HTTPReqResp1.Execute或HTTPReqResp1.Send:

HTTPReqResp1.OnBeforePost := BeforeRRPost;


文章来源: How to add/overwrite a HTTP header using THTTPReqResp?