我试图通过提供WSDL的url来访问在WSDL中定义的Web服务。我正在处理的具体案例是ebay“FindingService”。
解析WSDL后,我搜索我要查找的服务(例如“FindingService”)。接下来,我希望能够通过某种类型的客户端使用该服务(发送关键字并获得结果)。我环顾四周,找到了我试图修改的以下代码,以便将它用于我的示例。由于我还是WSDL的新手,我不知道如何调整它并且我一直收到错误:未定义的端口类型:{http://WSDL/} face
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class client{
public static void main(String[] args) throws Exception {
URL url = new URL("http://developer.ebay.com/webservices/finding/latest/findingservice.wsdl");
//1st argument service URI, refer to wsdl document above
//2nd argument is service name, refer to wsdl document above
QName qname = new QName("http://www.ebay.com/marketplace/search/v1/services", "FindingService");
Service service = Service.create(url, qname);
face hello = service.getPort(face.class);
System.out.println(hello.getHelloWorldAsString("test"));
}
}
第二节课是:
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface face{
@WebMethod String getHelloWorldAsString(String name);
}
第三类是:
import javax.jws.WebService;
//Service Implementation
@WebService(endpointInterface = "face")
public class endp implements face{
@Override
public String getHelloWorldAsString(String name) {
return "Hello World JAX-WS " + name;
}
}
如果能得到一些指导,我会感激不尽。有可能访问这样的服务,还是我必须使用ebay API(带密钥等)?
答案 0 :(得分:0)
WSDL只是客户端和服务器之间的契约。
最佳解决方案是不在运行时解析WSDL并尝试调用操作。您可能希望将这些操作称为执行有用的操作。例如:查找所有用户Ebay订单。
这些行动中的每一个都可以具有复杂的输入和输出。在Java中使用SOAP Web服务的最佳解决方案通常是生成基于WSDL的代码,因此您将拥有一个完整的工作客户端而无需太多工作。
我可以推荐这些API:
JAX-WS: http://www.mkyong.com/webservices/jax-ws/jax-ws-wsimport-tool-example/
弹簧-WS: https://spring.io/guides/gs/consuming-web-service/
轴心2: https://axis.apache.org/axis2/java/core/docs/userguide-creatingclients.html