TIdHTTP.Request.ContentType
НЕ ДЕЛАЕТ просить сервер отправлять XML и HTML. Он сообщает серверу, что YOU отправляет XML/HTML на сервер. Совсем другая вещь.
Чтобы запросить у вас сервер для отправки XML/HTML, это действительно зависит от сервера, а не от клиента. У вас есть несколько вариантов, в зависимости от требований сервера:
Запросить специальный URL-адрес, который отправляет только XML. Запросить определенный URL, который отправляет только HTML. И т.д.
Запросить URL-адрес, который вызывает сценарий на стороне сервера, который позволяет вам передать входной параметр, обычно (но не всегда) в URL, для указания желаемого формата вывода.
Включить заголовок Accept
в запрос, который указывает конкретные форматы, которые вы хотите получить для данного URL. Сервер должен быть способен представлять запрошенные данные в нескольких форматах.
У вас есть фундаментальное непонимание того, как работают HTTP и TIdHTTP
. Я настоятельно рекомендую вам использовать Wireshark и Fiddler для изучения того, как настоящие веб-браузеры отправляют HTTP-запросы, а затем узнают, как их реплицировать в коде. Также изучите RFC 2616. HTTP не является тривиальным для правильной реализации вручную, поэтому, отказываясь использовать предварительно созданную библиотеку HTTP, вы открываете большую банку червей, тогда вы, вероятно, еще готовы.
@LIVESTUFF: Fiddler является прокси-сервер. Он может автоматически перенаправлять приложения на базе WinInet (например, Internet Explorer) для подключения к себе, но другие приложения, например ваши, должны быть настроены вручную для подключения к прокси. 'TIdHTTP' имеет свойство« ProxyParams »для этой цели. –