Я новичок в SOAP, которому поручено воскресить старый мыльный интерфейс. Я перенес сервис мыла на новый кот по новому пути (и оставил клиент без изменений). Я отправляю запрос: http://myserver:8181/soap/SoapTest?wsdl и получаю ответ:
<wsdl:definitions xmlns:ns1="http://webservices.mycompany.com"
xmlns:ns3="http://schemas.xmlsoap.org/wsdl/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.mycompany.com/SoapTest"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="SoapTestService"
targetNamespace="http://www.mycompany.com/SoapTest">
<wsdl:import location="http://myserver:8181/soap/SoapTest?wsdl=SoapTest.wsdl"
namespace="http://webservices.mycompany.com"></wsdl:import>
<wsdl:binding name="SoapTestServiceSoapBinding" type="ns1:SoapTest">...</wsdl:binding>
<wsdl:service name="SoapTestService">...</wsdl:service>
</wsdl:definitions>
Кажется многообещающим. Запрос к месту импорта SoapTest?wsdl=SoapTest.wsdl возвращает:
<wsdl:definitions xmlns:ns1="http://webservices.mycompany.com"
xmlns:ns2="http://jaxb.dev.java.net/array" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="SoapTest"
targetNamespace="http://webservices.mycompany.com">
<wsdl:types>
<xs:schema xmlns:tns="http://webservices.mycompany.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://webservices.mycompany.com" version="1.0">
<xs:complexType name="sessionObj">
<xs:sequence>
<xs:element name="code" type="xs:int"/>
<xs:element name="id" type="xs:long"/>
<xs:element minOccurs="0" name="role" type="xs:string"/>
<xs:element minOccurs="0" name="username" type="xs:string"/>
</xs:sequence>
</xs:complexType>
... (and so on)
Таким образом, клиент может получать ассоциации имя члена xs: тип, но, похоже, не использует их или не применяет их. То есть ...
ХА... при просмотре я вижу, что xs используется в качестве пространства имен, но определено xmlns:xsd?? Как это может произойти?
Клиентские запросы ZSI (из Windows, если это имеет значение) к этому интерфейсу (Linux) получают ответы, содержащие ожидаемую полезную нагрузку данных, но затем сопоставляют каждый элемент данных с отдельным «свойством», что приводит к списку общих свойств.
Я ожидал список типизированных членов, где каждое свойство приводится к своему типу xs (например, int, long, string, string для приведенного выше), верно?
Заранее спасибо за любые подсказки.