Как сгенерировать Java-класс веб-службы для WSDL-файла, который работает с sudzc.com для создания кода Objective-C?
Как я могу сгенерировать из класса Web-сервиса Java WSDL-файл, который поддерживается Sudzc.com для генерации кода Objective-C?
Я попробовал это на простом примере.
Мой класс веб-службы Java:
package main;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService(name="RectangleWebService", serviceName = "RectangleWebService", portName = "RectangleWebServicePort", targetNamespace = "http://www.mywstest.com/ws/rectangle")
public class RectangleService {
@WebMethod(action="calculateValueOne")
public @WebResult(name="ValueOne") float calculateValueOne(@WebParam(name="Length") float length, @WebParam(name="Width")float width){
return 2*(length+width);
}
@WebMethod(action="calculateValueTwo")
public @WebResult(name="ValueTwo") float calculateValueTwo(@WebParam(name="Length") float length, @WebParam(name="Width")float width){
return (length*width);
}
}
Я создаю WSDL-файл с помощью ant-script и wsgen, а затем загрузил его на http://sudzc.com/ для создания кода Objective-C (Objective-C для iOS с ARC). Моя проблема заключается в том, что созданный код Objective-C от Sudzc.com не имеет методов экземпляра...
Это мой WSDL-файл:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. -->
<definitions targetNamespace="http://www.mywstest.com" name="RectangleWebService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.mywstest.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<import namespace="http://www.mywstest.com/ws/rectangle" location="RectangleWebServicePortType.wsdl"/>
<binding name="RectangleWebServicePortBinding" type="ns1:RectangleWebService" xmlns:ns1="http://www.mywstest.com/ws/rectangle">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="calculateValueOne">
<soap:operation soapAction="calculateValueOne"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="calculateValueTwo">
<soap:operation soapAction="calculateValueTwo"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="RectangleWebService">
<port name="RectangleWebServicePort" binding="tns:RectangleWebServicePortBinding">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</definitions>
Когда я использую WSDL-файл с http://www.w3schools.com/webservices/tempconvert.asmx?WSDL для генерации кода Objective-C с помощью sudzc.com, он работает нормально, и я могу использовать методы экземпляра в Интернете сервис в моем проекте Objective-C...!!!
Возможно, кто-то может помочь?
PS Извините за мой плохой английский, и я абсолютный новичок в веб-сервисах...
2 ответа
У sudzC много проблем с памятью, я использую WSClient++ для генерации классов, и у меня никогда не было проблем.
Проблема в том, что сгенерированный файл RectangleWebService.wsdl имеет импорт схемы из внешнего файла schema1.xsd...
Поэтому я должен создать один wsdl-файл, а затем он должен работать с sudzc.com...
Правильно ли мое предположение?