gpt4 book ai didi

java - 如何从 java 调用 Web 服务(由 wsdl 描述)

转载 作者:IT老高 更新时间:2023-10-28 20:35:50 24 4
gpt4 key购买 nike

对网络服务一无所知,我只是想调用一些由 wsdl 描述的“isAlive”服务。

在我看来,这应该需要不超过 2-5 行代码,但除了涉及 3rd 方包等的巨大长示异常(exception),我似乎找不到任何东西。

有人有什么想法吗?如果总是假设它很长,那么对于为什么它必须如此复杂的一个很好的解释也会受到赞赏。我使用的是 Eclipse,wsdl 是 SOAP。

最佳答案

JDK 6 附带了 jax-ws,这是为 Web 服务开发客户端所需的一切。

我找不到一些足够简单的示例来发布,但从 https://jax-ws.dev.java.net/ 开始

编辑:这是一个简单的例子——这个网络服务的客户端:http://xmethods.com/ve2/ViewListing.po?key=427565

C:\temp> md generated
C:\temp>"c:\Program Files\Java\jdk1.6.0_17"\bin\wsimport -keep -d generated http://www50.brinkster.com/vbfacileinpt/np.asmx?wsdl

创建 PrimeClient.java,如下所示:

import javax.xml.ws.WebServiceRef;
import com.microsoft.webservices.*;
//the above namespace is from the generated code from the wsdl.

public class PrimeClient {
//Cant get this to work.. @WebServiceRef(wsdlLocation="http://www50.brinkster.com/vbfacileinpt/np.asmx?wsdl")
static PrimeNumbers service;

public static void main(String[] args) {
try {
service = new PrimeNumbers();
PrimeClient client = new PrimeClient();
client.doTest(args);
} catch(Exception e) {
e.printStackTrace();
}
}

public void doTest(String[] args) {
try {
System.out.println("Retrieving the port from the following service: " + service);
PrimeNumbersSoap pm = service.getPrimeNumbersSoap();
System.out.println("Invoking the getPrimeNumbersSoap operation ");
System.out.println(pm.getPrimeNumbers(100));
} catch(Exception e) {
e.printStackTrace();
}
}
}

编译运行:

C:\temp>"c:\Program Files\Java\jdk1.6.0_17"\bin\javac -cp generated PrimeClient.java
C:\temp>"c:\Program Files\Java\jdk1.6.0_17"\bin\java -cp .;generated PrimeClient
Retrieving the port from the following service: com.microsoft.webservices.PrimeN
umbers@19b5393
Invoking the getPrimeNumbersSoap operation
1,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97

关于java - 如何从 java 调用 Web 服务(由 wsdl 描述),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826379/

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