【问题标题】:How to add/overwrite a HTTP header using THTTPReqResp?如何使用 THTTPReqResp 添加/覆盖 HTTP 标头?
【发布时间】:2012-11-12 14:32:17
【问题描述】:

我想使用 Exchange EWS Web 服务并自己处理 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 错误发生在 Execute 上(如果我使用 Send/Recieve 而不是 Execute,则在 Receive 上)

顺便说一句,如果 THTTPReqResp 不是正确的方法,欢迎使用 cmets。我也在尝试 TidHTTP,见this post。

带有 Indy 10.5.8.0 的 Delphi XE2 更新 4

谢谢 一月

【问题讨论】:

    标签: delphi http delphi-xe2 indy


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 2011-04-17
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 2019-05-11
      相关资源
      最近更新 更多