Ne connaissant rien aux services Web, j'essaie simplement d'appeler un service "isAlive" décrit par un wsdl.
Cela me semble être quelque chose qui ne devrait pas prendre plus de 2 à 5 lignes de code, mais je n'arrive pas à trouver autre chose que d'énormes longs exemples impliquant des packages tiers, etc.
Quelqu'un a des idées? S'il est toujours supposé être long, une bonne explication des raisons pour lesquelles il doit être si compliqué sera également appréciée. J'utilise Eclipse et le wsdl est SOAP.
JDK 6 est livré avec jax-ws, tout ce dont vous avez besoin pour développer un client pour un service Web.
Je ne trouve pas d'exemples assez simples à publier, mais commencez par https://jax-ws.dev.Java.net/
Modifier: voici un exemple simple - un client pour ce service 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
Créez PrimeClient.Java qui ressemble à:
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();
}
}
}
Compiler et exécuter:
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
Il existe des plugins pour les IDE qui génèrent le code nécessaire pour consommer un service Web pour vous.
Une fois que le plugin vous a généré les méthodes de base, vous appelez simplement un service Web comme celui-ci:
TransportServiceSoap service = new TransportServiceLocator().getTransportServiceSoap();
service.getCities();
Jetez un œil à http://urbas.tk/index.php/2009/02/20/Eclipse-plug-in-as-a-web-service-client/
Il existe trois façons d'écrire un client de service Web
Exemple pour Dynamic Proxy Client
import Java.net.URL;
import javax.xml.rpc.Service;
import javax.xml.rpc.JAXRPCException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceFactory;
import dynamicproxy.HelloIF;
public class HelloClient {
public static void main(String[] args) {
try {
String UrlString = "Your WSDL URL"; //
String nameSpaceUri = "urn:Foo";
String serviceName = "MyHelloService";
String portName = "HelloIFPort";
System.out.println("UrlString = " + UrlString);
URL helloWsdlUrl = new URL(UrlString);
ServiceFactory serviceFactory =
ServiceFactory.newInstance();
Service helloService =
serviceFactory.createService(helloWsdlUrl,
new QName(nameSpaceUri, serviceName));
dynamicproxy.HelloIF myProxy =
(dynamicproxy.HelloIF)
helloService.getPort(
new QName(nameSpaceUri, portName),
dynamicproxy.HelloIF.class);
System.out.println(myProxy.sayHello("Buzz"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}