gpt4 book ai didi

java - 从 WSDL 链接 java 访问 Web 服务

转载 作者:太空宇宙 更新时间:2023-11-04 13:55:53 26 4
gpt4 key购买 nike

我试图通过提供 WSDL 的 url 来访问 WSDL 中定义的 Web 服务。我正在处理的具体案例是 ebay“FindingService”。

解析 WSDL 后,我搜索我正在寻找的服务(例如“FindingService”)。接下来,我希望能够通过某种客户端使用该服务(发送关键字并获取结果)。我环顾四周,发现了以下代码,我尝试修改它以将其用于我的示例。由于我对 WSDL 还很陌生,所以我不确定如何适应它,并且不断收到错误:未定义的端口类型:{http://WSDL/ }脸

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(带有 key 等)?

最佳答案

WSDL 只是客户端和服务器之间的契约。

最好的解决方案是不在运行时解析 WSDL 并尝试调用操作。您可能想调用这些操作来做一些有用的事情。例如:查找所有用户 Ebay 订单。

每个操作都可以有复杂的输入和输出。在 Java 中使用 SOAP Web 服务的最佳解决方案通常是生成基于 WSDL 的代码,因此您无需做太多工作即可拥有一个完整的工作客户端。

我可以推荐这些 API:

JAX-WS: http://www.mkyong.com/webservices/jax-ws/jax-ws-wsimport-tool-example/

Spring-WS: https://spring.io/guides/gs/consuming-web-service/

轴 2: https://axis.apache.org/axis2/java/core/docs/userguide-creatingclients.html

关于java - 从 WSDL 链接 java 访问 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29835250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com