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

cod*_*tty 23 java soap web-services

我什么都不知道Web服务,我只是想调用一些由wsdl描述的"isAlive"服务.

在我看来这似乎不应该超过2-5行代码,但我似乎找不到任何东西,只有大量长的例子涉及第三方包等.

有人有什么想法吗?如果它总是被认为是长的可能是一个很好的解释,为什么它必须如此复杂也将不胜感激.我正在使用Eclipse,而wsdl是SOAP.

nos*_*nos 6

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

我无法找到一些简单的例子来发布,但请从https://jax-ws.dev.java.net/开始

编辑:这是一个简单的例子 - 这个Web服务的客户端: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
Run Code Online (Sandbox Code Playgroud)

创建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();
    }
  }
} 
Run Code Online (Sandbox Code Playgroud)

编译并运行:

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
Run Code Online (Sandbox Code Playgroud)

  • 答案中的两个链接都已死亡. (2认同)

JCa*_*sso 4

有一些 IDE 插件可以生成为您使用 Web 服务所需的代码。

插件生成基本方法后,您只需调用 Web 服务即可:

TransportServiceSoap service = new TransportServiceLocator().getTransportServiceSoap();
service.getCities();
Run Code Online (Sandbox Code Playgroud)

看看http://urbas.tk/index.php/2009/02/20/eclipse-plug-in-as-a-web-service-client/