Мыло Delphi Client завершается тайм-аутом на вызов 1 МБ - PullRequest
5 голосов
/ 16 апреля 2010

мы разрабатываем веб-сервис SOAP (Apache / PHP). Все они работают хорошо для вызовов небольшого размера, но с мыльным вызовом 1 МБ (размер вызова HTTPS составляет 1 МБ) наш клиент Delphi Soap останавливается с таймаутом на всех ПК, кроме одного, и наши клиенты PHP работают хорошо с default_socket_timeout = 300, но останавливаются с «Ошибка получения заголовков http» с default_socket_timeout = 60.

Как мы можем изменить время ожидания для Delphi? На самом деле этот тайм-аут, похоже, находится в сетевой библиотеке Windows XP (wininet.dll, вызываемый soaphttptrans.pas)

Спасибо
Седрик

Ответы [ 2 ]

5 голосов
/ 19 апреля 2010

На самом деле это была проблема с установкой IE7: она изменяла все время ожидания сети.

ПК с IE6 имеет время ожидания 3600 секунд, IE7 меняет его на 30 секунд. Использование InternetQueryOption () показывает это, а InternetSetOption помогает изменить это.

Большое спасибо моему товарищу по работе, который часами охотится на жука.

3 голосов
/ 16 апреля 2010

В SOAPHttpTrans есть MaxSinglePostSize. Кажется, я помню, что у меня были проблемы с этим. Это не предел, но он ведет себя по-разному (разбивается на куски для отправки), если вы закончили или не достигли этого предела. (в основном 32768 по умолчанию). Я ожидаю, что вы достигнете этого размера раньше, если вы на D2009 / D2010 из-за широких струн. Было бы интересно увидеть, если у вас возникнут проблемы с этим размером. Вы можете использовать Fiddler для захвата некоторого вывода (или подключиться к событию OnBeforePost и сделать дамп сериализованного XML-файла в файл самостоятельно) и посмотреть, если это то, где у вас возникли проблемы, вместо ранее наблюдаемого 1 МБ.

Но в любом случае класс THTTPReqResp имеет опции для SendTimeout и ReceiveTimeout. Попробуйте настроить их.

Также ... если вы используете Delphi до Delphi2007, вы должны обновить свои библиотеки мыла. Где-то есть загрузка ... множество исправлений ошибок, в том числе неприятная проблема с памятью, из-за которой DEP может остановить ваше приложение.

...