2 pièce(s) jointe(s)
Problème de consommation d’un web service SOAP
Bonjour à tous,
J'ai pour mission de développer une application web en utilisant JSF2, EJB3 sur un serveur d’application JBOSS7.
L'application est très simple, cependant je dois consommer un web service développé par d'autres personnes (soap/wsdl).
A l’aide de SOAPUI, le dit web service fonctionne parfaitement.
Le problème : lors de l’intégration dans un code Java, le message d’erreur s’affiche :« The server sent HTTP status code 404: null «
Puis-je avoir vos conseils ?
Merci
WSDL: Pièce jointe 486386
Test avec SoapUi: Pièce jointe 486388
Remarque: lors de la phase de test avec soapUi, il faut intégrer manuellement l’URL endpoint ainsi la valeur de soapaction.
Classe : ResponseHeader.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
package com.myproject.site;
public class ResponseHeader {
private int code;
public ResponseHeader() {
super();
// TODO Auto-generated constructor stub
}
public ResponseHeader(int code) {
super();
this.code = code;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
} |
Interface SiteService.java:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
package com.myproject.site;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(targetNamespace = "http://www.monsite.com/webservices/app-homeSecurityValidation-ws", name = "app-homeSecurityValidation-ws")
public interface SiteService {
@WebMethod
public ResponseHeader HomeSecurityValidationRequest(
@WebParam(name = "verif", targetNamespace = "")
java.lang.String verif,
@WebParam(name = "login", targetNamespace = "")
java.lang.String account,
@WebParam(name = "password", targetNamespace = "")
java.lang.String password
) ;
} |
La classe main Test.java:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
package com.myproject.site;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Service;
public class Test {
public static void main(String[] args) throws SOAPException, IOException {
try {
String soapEndpointUrl = "http://10.168.12.12:8080/homeSecurityValidation/app-homeSecurityValidation-ws";
String soapAction = "homeSecurityValidation";
URL url = new URL("http://10.168.12.12:8080/homeSecurityValidation/app-homeSecurityValidation-ws.wsdl");
QName qName = new QName("http://www.monsite.com/webservices/app-homeSecurityValidation-ws",
"app-homeSecurityValidation-ws");
/*********/
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", soapAction);
soapMessage.saveChanges();
Service service = Service.create(url, qName);
SiteService hello = (SiteService) service.getPort(SiteService.class);
BindingProvider bp = (BindingProvider) hello;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, soapEndpointUrl);
ResponseHeader r = hello.HomeSecurityValidationRequest("OK",
"mylogin",
"mypassword");
System.out.println("response: " + r.getCode());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
} |
Console Eclipse :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 404: null
atcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:296)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:245)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:203)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:122)
at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:123)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:626)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:585)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:570)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:467)
at com.sun.xml.internal.ws.client.Stub.process(Stub.java:308)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:163)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:135)
at com.sun.proxy.$Proxy10.homeSecurityValidationRequest(Unknown Source)
at com.myproject.site.Test.main(Test.java:112)
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc." |