如何使用THTTPReqResp添加/覆盖HTTP头?

3
我希望能够访问Exchange EWS webservice并自己处理XML SOAP的组合(请求)和解析(响应)。因此,THTPPRIO似乎有点过度。我正在尝试使用THTTPReqResp,但卡在这里了:该web服务不遵循规格,期望一个

标签。
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”错误会在执行操作时发生(如果我使用发送/接收而不是执行,则会在接收操作上发生)。

另外,如果THTTPReqResp不是正确的方式,欢迎提供评论。我也正在尝试TidHTTP,请参见此文章

Delphi XE2升级4与Indy 10.5.8.0版本。

谢谢。 Jan

1个回答

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接