Thread: FoxPro Some General Questions/WebService & XML

WebService & XML

Добрый день.


Занимаюсь сопряжением стороннего маршрутизатора XML сообщений с программой, написанной на Fox Pro. Изучив ваши статьи на тему WebService, пришёл к выводу что это единственная возможная реализация задачи.


Были созданы ВебСервисы с несколькими методами. Всё было сделано по вашим инструкциям. При вызове методов из командной строки данные можно и передавать, и получать. Всё как и нужно... дальше возникла проблема именно сопряжения стороннего маршрутизатора XML сообщений.


Запустил утилиту перехвата SOAP сообщений MSSoapT, устанавливающуюся вместе с FoxPro, и изучил сообщения, которые проходят к ВебСервисам и обратно.


Если делать вызов, допустим метода "test", то получаем вот такое сообщение запроса:


 





  <?xml  version="1.0" encoding="UTF-8" standalone="no" ?>


- <SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">



- <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">



  <SOAPSDK4:test xmlns:SOAPSDK4="http://tempuri.org/WS_MES_SERVER/message/" />


  </SOAP-ENV:Body>



  </SOAP-ENV:Envelope>

 

 

И вот такое сообщение ответа: 

 



  <?xml  version="1.0" encoding="UTF-8" standalone="no" ?>


- <SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">



- <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">



- <SOAPSDK4:testResponse xmlns:SOAPSDK4="http://tempuri.org/WS_MES_SERVER/message/">



  <Result>1</Result>


  </SOAPSDK4:testResponse>



  </SOAP-ENV:Body>



  </SOAP-ENV:Envelope>

 

 

Насколько я понял,  данные ответа лежат в теге Result. Если на вывод данных готовить xml сообщение заранее оформленной структуры... оно находится там-же.

 

 

Дальше - хуже. Настраиваю маршрутизатор на работу с ВебСервисами (прописываю адрес ВебСервисов: http://MyHost:8080/ws_server/ws_mes_server.WSDL). Запускаю тест сервиса в машрутизаторе, и получаю ошибку. В утилите MSSOapT вижу следующие запросы:

 



  <?xml  version="1.0" ?>


- <MESSAGE DTD="XMLMSG"  VERSION="1.0">



- <COMMAND>



  <REQUEST NAME="TEST"  DTD=""  VERSION=""  ID="1"  />


  </COMMAND>



  </MESSAGE>




 

 

И соответственно ответ ВебСервисов, которые не знают что дальше делать с таким сообщением:

 



  <?xml  version="1.0" encoding="UTF-8" standalone="no" ?>


- <SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema" xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">



- <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">



- <SOAP-ENV:Fault>



  <faultcode>SOAP-ENV:Server</faultcode>



  <faultstring>An unanticipated error occurred during the  processing of this request.</faultstring>



  <faultactor>SoapAction could not be retrieved from the request</faultactor>


  </SOAP-ENV:Fault>



  </SOAP-ENV:Body>



  </SOAP-ENV:Envelope>

 

Каким образом можно запустить обработку заранее известного xml-сообщения от маршрутизатора на стороне веб-сервисов и выдать правильно-сформированное xml-сообщение без лишней технической информации о SOAP схемах и лишних тегах примерно в вот таком виде:

 



  <?xml  version="1.0" encoding="UTF-8" ?>


- <MESSAGE DTD="XMLMSG"  VERSION="1.0">



- <RESULT>



- <RESPONSE NAME="TEST"  DTD=""  VERSION=""  VENDOR="1">



- <DATA>



  <OTHER INFORMATION  />


  </DATA>



  </RESPONSE>



  </RESULT>



  </MESSAGE>












 





Re: WebService & XML

Криво отобразилось...


Заранее благодарен за ответ :)