2011-09-13 2 views
1

Je suis confronté à ce problème depuis plus d'un mois, donc je serais vraiment heureux de votre aide, en fait je demande un moyen qui peut me permettre d'analyser un message SOAP (demande) pour récupérer les informations nécessaires, telles comme les informations de sécurité s'il y a une et des informations du corps du messageUnmarshalling SOAP Messages à Java/ou simplement l'analyse du message SOAP?


Merci de me répondre, mais sais que je fais affaire avec un autre problerm qui est le WS-SecurityPolicy et je dois Finaly analyser un fichier XML le fichier comme celui-ci: <?xml version="1.0" encoding="UTF-8"?>

<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
     <wsp:Policy> 
     <sp:TransportToken> 
      <wsp:Policy> 
      <sp:HttpsToken RequireClientCertificate="false"/> 
      </wsp:Policy> 
     </sp:TransportToken> 
     <sp:AlgorithmSuite> 
      <wsp:Policy> 
      <sp:Basic128/> 
      </wsp:Policy> 
     </sp:AlgorithmSuite> 
     <sp:Layout> 
      <wsp:Policy> 
      <sp:Lax/> 
      </wsp:Policy> 
     </sp:Layout> 
     <sp:IncludeTimestamp/> 
     </wsp:Policy> 
    </sp:TransportBinding> 
    <sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
     <wsp:Policy> 
      <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" /> 
     </wsp:Policy> 
    </sp:SignedSupportingTokens> 

'

sachant que ce fichier XML s'appelle Policy.xml et contient les règles de WS-SecurityPolicy, qui doivent être présentes.

+0

S'il vous plaît pouvez-vous écrire en anglais seulement. Merci. – Kev

Répondre

4

Cela dépend de ce qu'il y a dans votre message. Vous avez tagué votre question avec jaxb ce qui me fait penser que vous avez des données xml-serialized dans un message soap. Si tel est le cas, vous pouvez utiliser JAXB unmarshaller pour convertir votre message à une instance de la classe Java:

JAXBContext jbc = JAXBContext.newInstance("com.mypackage"); 
Unmarshaller um = jbc.createUnmarshaller(); 

JAXBElement<MyClass> element = um.unmarshal(parameterNode, MyClass.class); 
MyClass data = element.getValue(); 
1

Je suppose que vous avez déjà un objet soap et que vous voulez analyser le contenu du message. Si vous avez le message soap sous la forme d'une chaîne, vous pouvez commencer à construire l'objet Document à l'aide de la chaîne.

2

J'ai trouvé ce code unmarshall d'un message SOAPResponse à la classe POJO, je l'espère être utile.

//unmarshalling 
    JAXBContext jc = JAXBContext.newInstance(MyPOJO.class); 
    Unmarshaller um = jc.createUnmarshaller(); 
    MyPOJO output = (MyPOJO)um.unmarshal(soapResponse.getSOAPBody().extractContentAsDocument());