2012-11-12 77 views
3

我想要接近Exchange EWS webservice並處理自己的XML SOAP組合(請求)和解析(響應)。 因此,THTPPRIO似乎有點矯枉過正。如何使用THTTPReqResp添加/覆蓋HTTP標頭?

我想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,請參閱this post

德爾福XE2更新4印第10.5.8.0

感謝 月

回答

0

我發現:

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;