XML из вызова веб-службы
-
03-07-2019 - |
Вопрос
Visual Studio упрощает вызов веб-сервиса, но сложно понять, что происходит под его обложкой.
Как я могу увидеть фактический XML-код, созданный из моего приложения .Net, при вызове веб-службы?
Решение
такие инструменты, как tcptrace или Скрипач может помочь.
несколько ссылок по устранению неполадок:
Отслеживание WCF с помощью TcpTrace
Другие советы
Пример кода MSDN который реализует TraceExtension для SOAP;Вы можете использовать «как есть» или изменить вход в систему по своему усмотрению (я использовал БД и сохранил ее не только для отладки, но и для архивирования всех сообщений на будущее).
Для вызовов веб-службы SOAP я нашел Мыльный интерфейс быть чрезвычайно полезным.Он может подключаться к WSDL для получения определений методов, создавать каркасные конверты для вызова этих методов, и вы можете увидеть полноценный результат после вызова.
Вне Visual Studio вы можете использовать инструмент Fiddler, чтобы точно узнать, что содержится в запросах и ответах.
Внутри Visual Studio вы можете записать DataSet в файл.
myDataSet.WriteXml(filename);
Вот еще один пример того, как это можно сделать в Visual Studio.Все, что нужно сделать, — это получить ответ от веб-сервиса и сохранить его в указанный вами файл:
Dim url As String = "http://web.service.com/"
Dim request As WebRequest = WebRequest.Create(url)
Dim response As WebResponse = request.GetResponse()
Dim stream As Stream = response.GetResponseStream()
Dim xmlDoc As XmlDocument = New XmlDocument
xmlDoc.Load(stream)
xmlDoc.Save("C:\Temp\foo.xml")
Предложение использовать Скрипач этого было достаточно, чтобы привлечь к работе свою ИТ-команду.У них уже была копия подобной программы WireShark установлен на веб-сервере.
Не будучи очень разбирающимся в сети, я сначала думал, что смогу отслеживать запросы, сделанные с моего компьютера к веб-сервису.Это не сработало.Мониторинг запросов по мере их поступления на веб-сервер дал мне структуру заголовка http и мыльного конверта.
Спасибо за все ответы.