На более любопытных задачах в саге Delphi / Indy / TWebBrowser / Tableau.
Мне очень трудно понять, почему отправка запроса GET на сервер Tableau с использованием компонента TIdHttp всегда возвращает ответ JSON, в то время как один и тот же запрос в элементе управления TWebBrowser с тем же заголовком auth возвращает ответ XML.
Я немного предпочитаю XML - хотя он и требует большей полосы пропускания - поскольку у нас много инфраструктуры XML и в настоящее время нет инфраструктуры JSON.
Когда я отправляю запрос с компонентом TIdHttp, я отправляю его со следующими параметрами:
http.Request.CustomHeaders.Text := GetAuthHeader(FToken);
http.Request.ContentType := 'application/json';
Я тоже пробовал это:
http.Request.ContentType := 'text/xml';
http.Request.Accept := 'text/xml';
И
http.Request.ContentType := 'application/xml';
http.Request.Accept := application/xml';
И
<no settings specified for accept and contenttype, just let it use the defaults>
...
sHTML := http.Get('http://<myserver>/api/3.0/sites/' + FSiteId + '/views')
... и всегда получать ответ в формате JSON.
Когда я отправляю тот же запрос с TWebBrowser:
var
hdr,flags,targetframe,postdata,Aurl: OleVariant;
begin
AUrl := http://<myserver>/api/3.0/sites/' + FSiteId + '/views';
flags := navNoHistory+navNoReadFromCache+navNoWriteToCache;
targetframe := 1;
postdata := 1;
hdr := GetAuthHeader(FToken);
Navigate2(Aurl,flags,targetframe,postdata,hdr);
end;
... ответ всегда возвращается в виде XML.
Кто-нибудь понимает, почему это произошло? Я попытался зарегистрировать необработанный запрос, чтобы увидеть, как он настраивается TWebBrowser, но не могу получить необработанный запрос. Возможно, мне следует настроить прокси-сервер ...
ТИА