Если вы хотите реализовать клиентский доступ HTTP в своем приложении, вы можете рассмотреть несколько вариантов:
- Использовать предоставляемые компоненты Indy;
- Использовать сторонние компоненты, такие как Synapse, ICS или ваша собственная оболочка на основе WinSock;
- Использовать WinINet;
- Использовать WinHTTP.
Для нашего ORM , для его HTTPНа уровне соединения / 1.1 мы попытались избежать внешних зависимостей и не нуждались во всех функциях и издержках Indy.
Сначала мы написали нашу собственную оболочку WinSock, а затем опробовали WinInet.При использовании в нашем тестовом тесте мы обнаружили, что WinINet был очень медленным.
Затем мы попробовали WinHTTP, новый API, предоставленный Microsoft, и обнаружили, что он быстро работает.Так же быстро, как прямой доступ к WinSock, без необходимости написания всего кода оболочки.
Итак, вот наша оболочка OpenSource WinHTTP, в модуле с именем SynCrtSock .Протестировано с Delphi 5 до XE.
Вы увидите, что мы использовали один и тот же универсальный класс для WinINet и WinHTTP.На самом деле обе библиотеки очень близки.
Подробнее см. в этой статье .Есть примечание об автоматическом извлечении прокси.
Редактировать: с выходом Delphi XE2, вы сможете кросс-компилировать в Mac OS X. В этом случае, это прекрасноимеет смысл использовать «абстрактные» классы, такие как SynCrtSock
.Под Windows он будет использовать WinHTTP, но под Mac OS X он будет вызывать API сокетов.Чтобы ваш код компилировался, вам нужно просто настроить тип класса, а не код.