Обновлено: 20.03.2008
При работе с web-сервисами нередко возникают ошибки, которые трудно диагностировать по сообщению об ошибке, выдаваемому 1С:Предприятием. Это могут быть:
Большинство из этих ошибок трудно диагностировать стандартными средствами. В данной статье описывается применение средств мониторинга сети для диагностирования таких ошибок.
Существует много программ мониторинга сети. Это, например, встроенные в Windows Server 2003 средства мониторинга сети, Wireshark, MS Soap Toolkit, Apache Axis Soap Monitor и др. Первые два не требуют специальной настройки и могут использоваться для мониторинга любого сетевого трафика. Последние два могут использоваться только для мониторинга HTTP Soap трафика и требуют перенаправления вызова на специальный порт перехвата.
Далее на примере монитора сети Wireshark мы покажем, как отслеживать те данные, которые передаются между клиентом и сервером и на основе их анализа определять характер наблюдаемых ошибок. Wireshark является свободно распространяемой программой с открытым исходным кодом.
Перед началом работы необходимо скачать монитор сети Wireshark c сайта http://www.wireshark.org и установить его на клиентский компьютер, с которого идет вызов web-сервисов. Под Windows, если требуется мониторинг localhost, то необходимо ознакомиться с http://wiki.wireshark.org/CaptureSetup/Loopback.
Wireshark выполняет мониторинг сети средствами операционной системы и поэтому не требует дополнительной настройки web-сервисов (например, перевода вызова на специальный порт перехвата и т.д.), все выполняется прозрачно.
Для запуска мониторинга нужно открыть диалог захвата интерфейсов "Capture/Interfaces...", выбрать в диалоге устройство сетевой карты, для которой предполагается вести мониторинг, и выполнить запуск, нажав кнопку "Start". После этого Wireshark будет вести мониторинг любых пакетов, передаваемых через выбранную сетевую карту. Для остановки мониторинга нужно выполнить "Capture/Stop".
Передаваемые пакеты будут выводиться в основном окне программы в виде списка. Для каждого пакета может быть выведена такая информации как: время создания, отправитель, получатель, протокол, дополнительные данные и др. Wireshark понимает большое количество протоколов, но для нашего случая интересен HTTP протокол. Для того чтобы получить список только HTTP пакетов, нужно в поле "Filter" главного окна программы задать "http" и нажать кнопку "Apply". Wireshark имеет развитые средства фильтрации. Можно фильтровать, например, по протоколу, по отправителю, получателю и др. (см. документацию Wireshark).
Для каждого выбранного в списке пакета Wireshark показывает данные пакета в разрезе стека протоколов. Например, для http пакета показывается информация по Frame 1, Ethernet II, IP, TCP и HTTP. Наиболее интересными для нас являются данные HTTP, где можно для запросов посмотреть тип запроса (GET, POST, ...), запрашиваемый ресурс, HTTP заголовки и данные запроса. Для ответов показывается HTTP статус, HTTP заголовки ответа и данные ответа. Если данные в формате xml, то Wireshark позволяет вывести их в иерархическом виде (вместо набора шестнадцатеричных данных), что очень удобно при анализе SOAP запросов.
Рассмотрим основные типы ошибок, которые могут возникнуть при работе с web-сервисами.