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 エラーが発生します。

ところで、THTTPReqResp が正しい方法でない場合は、コメントを歓迎します。TidHTTP も試しています。この投稿を参照してください。

Indy 10.5.8.0 を使用した Delphi XE2 Update 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 に答える