2010-09-29 4 views
1

J'essaie de me connecter et d'utiliser une méthode de service Web. Je reçois l'erreur suivante:ActionMismatch lors de l'utilisation du service Web

The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'http://tempuri.org/xpto/foobar'. 

En fait, le code dit ceci:

_state.getMessageContext().setProperty("http.soap.action", "http://yadayadayada"); 

mais il ne dit pas quoi que ce soit au sujet du message.

Les états WSDL: ce

<wsdl:input wsaw:Action="http://tempuri.org/foo/bar" message="tns:xpto"/> 

Répondre

1

Cette question a été résolue. J'ai dû modifier le code généré automatiquement par WSDL2Java. Dans la classe Stub, le code généré automatiquement ressemble à ceci;

(...) 
      org.apache.axis.client.Call _call = createCall(); 
    _call.setOperation(_operations[11]); 
    _call.setUseSOAPAction(true); 
    _call.setSOAPActionURI("http://tempuri.org/foo/bar"); 
    _call.setEncodingStyle(null); 
    _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE); 
    _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE); 
    _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS); 
    _call.setOperationName(new javax.xml.namespace.QName("http://tempuri.org/", "bar")); 

    setRequestHeaders(_call); 
    setAttachments(_call); 

je dû ajouter ce qui suit, avant les setRequestHeaders:

setHeader("http://www.w3.org/2005/08/addressing", "To", "http://WSDL.URL"); 
    setHeader("http://www.w3.org/2005/08/addressing", "Action", "http://tempuri.org/foo/bar"); 

    SOAPHeaderElement[] headers = getHeaders(); 
    for (SOAPHeaderElement h : headers) { h.setRole(null); } 

    setRequestHeaders(_call); 
    setAttachments(_call); 
Questions connexes