Groovy / Grails Использование WSClient для использования веб-службы .net - PullRequest
1 голос
/ 29 марта 2010

Я довольно плохо знаком с Grails / Groovy / Web-сервисами и использую веб-сервис .net ..

У меня есть код, который подключается к сервису с помощью подключаемого модуля Grails WS-client:

WebService webService

 def result = {
 def wsdl =  
  ApplicationHolder.application.parentContext.getResource('WEB-INF/productsSoap.wsdl')

def proxy = webService.getClient(wsdl.getURL().toString())
def productTypeListResponse = proxy.ProductTypeList()

}

Я также использовал soapUI для проверки данных, возвращаемых веб-службой, которая выдала ..

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
  <ProductTypeListResponse xmlns="http://tempuri.org/">
     <ProductTypeListResult>
        <xs:schema id="ProductTypeListResult" xmlns=""
 xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
           <xs:element name="ProductTypeListResult" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
              <xs:complexType>
                 <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="ProductTypeListResult">
                       <xs:complexType>
                          <xs:sequence>
                             <xs:element name="PRD_TypeId" type="xs:int" minOccurs="0"/>
                             <xs:element name="PRD_TypeName" type="xs:string" minOccurs="0"/>
                             <xs:element name="PRD_Type" type="xs:string" minOccurs="0"/>
                          </xs:sequence>
                       </xs:complexType>
                    </xs:element>
                 </xs:choice>
              </xs:complexType>
           </xs:element>
        </xs:schema>
        <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
           <ProductTypeListResult xmlns="">
              <ProductTypeListResult diffgr:id="ProductTypeListResult1" msdata:rowOrder="0">
                 <PRD_TypeId>2</PRD_TypeId>
                 <PRD_TypeName>ProdType2</PRD_TypeName>
                 <PRD_Type>S</PRD_Type>
              </ProductTypeListResult>
              <ProductTypeListResult diffgr:id="ProductTypeListResult2" msdata:rowOrder="1">
                 <PRD_TypeId>3</PRD_TypeId>
                 <PRD_TypeName>ProdType3</PRD_TypeName>
                 <PRD_Type>C</PRD_Type>
              </ProductTypeListResult>
              <ProductTypeListResult diffgr:id="ProductTypeListResult3" msdata:rowOrder="2">
                 <PRD_TypeId>4</PRD_TypeId>
                 <PRD_TypeName>ProdType4</PRD_TypeName>
              </ProductTypeListResult>
           </ProductTypeListResult>
        </diffgr:diffgram>
     </ProductTypeListResult>
  </ProductTypeListResponse>

> который является набором данных .net ..

Итак, мой вопрос: как мне получить информацию, используя мой productTypeListResponse? Кто-нибудь может дать мне указатель?

1 Ответ

0 голосов
/ 27 апреля 2011

Клиент WS должен сгенерировать правильный код для доступа к результату. Я не полностью понимаю wsdl, который генерирует сервис .net, но у вас должны быть такие методы, как

productTypeListResponse.ProductTypeListResult

на вашем объекте ответа. Посмотрите пример на Groovy WS client site .

ИМХО, я бы предложил вам использовать более зрелую библиотеку, такую ​​как spring ws

...