Я пытаюсь импортировать следующий веб-службу: http://www.biomart.org/biomart/martwsdlИмпорт WebService:
Использованием завитка для службы getResistry(): все в порядке:
curl --header 'Content-Type: text/xml' --data '<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mar="http://www.biomart.org:80/MartServiceSoap">
<soapenv:Header/>
<soapenv:Body>
<mar:getRegistry/>
</soapenv:Body>
</soapenv:Envelope>' http://www.biomart.org:80/biomart/martsoap
возвращается:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.o
rg/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/
envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<getRegistryResponse xmlns="http://www.biomart.org:80/MartServiceSoap">
<mart>
<name xsi:type="xsd:string">ensembl</name>
<displayName xsi:type="xsd:string">ENSEMBL GENES 57 (SANGER UK)</displayName>
<database xsi:type="xsd:string">ensembl_mart_57</database>
(...)
ОК.
Но когда эта услуга генерируется с использованием CXF/wsdl2java (или даже wsimport)
mkdir src
wsdl2java -keep -d src -client "http://www.biomart.org/biomart/martwsdl"
javac -g -d src -sourcepath src src/org/biomart/_80/martservicesoap/MartServiceSoap_BioMartSoapPort_Client.java
java -cp src org.biomart._80.martservicesoap.MartServiceSoap_BioMartSoapPort_Client
сгенерированный клиент возвращает пустой список для getRegistry():
Invoking getRegistry...
getRegistry.result=[]
почему? что мне делать, чтобы этот код работал?
Большое спасибо
Пьер
Пожалуйста показать код в MartServiceSoap_BioMartSoapPort_Client.java, основной метод, в частности, с последующим местом, где вы вызываете службу. – shivaspk
@shivaspk MartServiceSoap_BioMartSoapPort_Client.java был сгенерирован CXF/wsdl2java с использованием опции -client. – Pierre
Его единственный класс заглушки, который он генерирует, все, что он делает, это создать эквиваленты Java для операций WSDL, вам нужно написать простую java-программу для вызова операции getRegitry(). – shivaspk