мы разрабатываем веб-сервис SOAP (Apache/PHP). Все выполнение хорошо для небольшого размера вызовов, но с вызовом мыла 1 МБ (размер вызова HTTPS составляет 1 МБ), наша клиентская остановка Мыла Delphi с тайм-аутом на всем ПК, но один, и наши клиенты PHP, выполненные хорошо с default_socket_timeout=300, но остановкой с "Ошибкой при Выборке http заголовков" с default_socket_timeout=60.
Как мы можем изменить тайм-аут для Delphi? На самом деле этот тайм-аут, кажется, находится в сетевой библиотеке Windows XP (wininet.dll, названный soaphttptrans.pas)
Спасибо
Cédric
На самом деле это была проблема с установкой IE7: он полностью меняет время ожидания сети.
ПК с IE6 имеет тайм-аут 3600 секунд, IE7 изменяет его на 30 секунд. Использование InternetQueryOption () показывает это, а InternetSetOption помогает изменить это.
Большое спасибо моему напарнику, который часами выискивал ошибку.
В SOAPHttpTrans есть значение MaxSinglePostSize. Кажется, я припоминаю, что у меня с этим были проблемы. Это не предел, но он ведет себя по-другому (разбивается на части для отправки), если вы больше или ниже этого лимита. (по умолчанию 32768). Я ожидаю, что вы достигнете такого размера раньше, если будете на D2009 / D2010, из-за широких струн. Было бы интересно посмотреть, не возникнут ли у вас проблемы примерно такого размера. Вы можете использовать Fiddler для захвата некоторого вывода (или подключиться к событию OnBeforePost и самостоятельно выгрузить сериализованный XML в файл) и посмотреть, возникнут ли у вас проблемы, вместо ранее наблюдавшегося 1 МБ.
Но в любом случае у класса THTTPReqResp есть параметры для SendTimeout и ReceiveTimeout. Попробуйте отрегулировать их.
Также ... если вы используете Delphi до Delphi2007, вам следует обновить библиотеки мыла. Где-то есть загрузка ... много исправлений ошибок, включая неприятную проблему с памятью, из-за которой ваше приложение будет остановлено DEP.