3

我想接近 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 不是正确的方法,欢迎发表评论。我也在尝试 TidHTTP,请参阅这篇文章

带有 Indy 10.5.8.0 的 Delphi XE2 更新 4

谢谢简

4

1 回答 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;
于 2012-11-14T09:53:08.387 回答