Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1007 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Axis][WSDL2Java] Modification des Headers SOAP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Axis][WSDL2Java] Modification des Headers SOAP

n°1397319
broidsy
Posté le 29-06-2006 à 16:50:52  profilanswer
 

Bonjour,
 
J'ai généré les classes d'un web service à partir d'un fichier WSDL via WSDL2Java. Tout c'est bien déroulé, le webservice marche... Mais j'ai un petit problème je voudrais modifier (mode server) ou récupérer le contenu (mode client) des "headerSOAP" de certaine webMethode,  
 
Voici l'objectif à atteindre:

Citation :

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <PlugEventList xmlns="http://tempuri.org/">
      <events>
        <PlugParam>
          <type>string</type>
          <access>Read or Write or ReadWrite or CredentialRead or CredentialWrite or CredentialReadWrite</access>
          <value />
          <time>long</time>
          <sender>string</sender>
          <recipient>string</recipient>
          <operation>long</operation>
          <callsBack>
            <PlugCallBack xsi:nil="true" />
            <PlugCallBack xsi:nil="true" />
          </callsBack>
        </PlugParam>
        <PlugParam>
          <type>string</type>
          <access>Read or Write or ReadWrite or CredentialRead or CredentialWrite or CredentialReadWrite</access>
          <value />
          <time>long</time>
          <sender>string</sender>
          <recipient>string</recipient>
          <operation>long</operation>
          <callsBack>
            <PlugCallBack xsi:nil="true" />
            <PlugCallBack xsi:nil="true" />
          </callsBack>
        </PlugParam>
      </events>
    </PlugEventList>
  </soap:Header>
  <soap:Body>
    <GetEventsResponse xmlns="http://tempuri.org/">
      <GetEventsResult>long</GetEventsResult>
    </GetEventsResponse>
  </soap:Body>
</soap:Envelope>


 
D'après ce que j'ai trouvé sur le net (c'est à dire pas grand chose) il semblerais que pour le mode server, il faut modifier les ***Stub.java parmi les classes générées, est ce que je modifie la bonne fonction?

Code :
  1. public long getEvents(long ticks) throws java.rmi.RemoteException{
  2.         if (super.cachedEndpoint == null) {
  3.             throw new org.apache.axis.NoEndPointException();
  4.         }
  5.         org.apache.axis.client.Call _call = createCall();
  6.         _call.setOperation(_operations[10]);
  7.         _call.setUseSOAPAction(true);
  8.         _call.setSOAPActionURI("http://tempuri.org/GetEvents" );
  9.         _call.setEncodingStyle(null);
  10.         _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
  11.         _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
  12.         _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS);
  13.         _call.setOperationName(new javax.xml.namespace.QName("http://tempuri.org/", "GetEvents" ));
  14.        
  15.         try{
  16.             //Customisation
  17.             SOAPHeaderElement hd = new SOAPHeaderElement(new javax.xml.soap.Name("", "events" ) ;
  18.             hd.addChildElement("PlugParam" );
  19.             _call.addHeader(hd);
  20.           } catch (Exception ex) {
  21.                 ex.printStackTrace(System.err);
  22.           }


 
2) Est ce que quelqu'un peut me donner quelques conseils pour construire la liste des noeuds de cette tête en java car je ne maitrise pas du tout la construction des fichier xml? Je voudrais pas passer pour un feigant qui ne veut pas chercher sur le net ou se taper les tutôts. Mais dans le cadre des webservices ce genre de truc est assait pénible à debugguer (moniteur SOAP + à chaque fois deployement et copie des sources sur le serveur). Donc si vous pouviez me donner un exemple pour construire les principaux type de noeud ca serais vraiment très très, très gentil  :love: :) :love: :)  
 
D'avance Merci !

mood
Publicité
Posté le 29-06-2006 à 16:50:52  profilanswer
 

n°1401309
broidsy
Posté le 05-07-2006 à 17:54:04  profilanswer
 

Voila j'ai trouvé la moité de la solution: j'arrive à modifier les Header SOAP lors de l'appel (question) d'un web service, mais je cherche toujours comment les modifier lors de la réponse, est ce que quelqu'un as une idée ???
 
Pour ceux que ca intéresse, voici le code pour modifier les Header SOAP lors de l'appel (question) d'un web service (ce code peut être mit directement dans le ***stub.java si le code a été généré via WSDL2JAVA). Bien entendu, il faut remplacer les "string,long ..." par les valeurs ...  ;)  

Code :
  1. public static void GetDateTime(){
  2.         long ticks = 0;
  3.         try {
  4.             String endpointURL = "http://localhost:8084/axis/services/uddiSoap12?wsdl";
  5.             Service  service = new Service();
  6.             Call     call    = (Call) service.createCall();
  7.             call.setTargetEndpointAddress( new java.net.URL(endpointURL) );
  8.             call.setOperationName("GetEvents" );
  9.             call.addParameter("GetEvents",org.apache.axis.encoding.XMLType.XSD_LONG,javax.xml.rpc.ParameterMode.IN);
  10.             call.setReturnType( org.apache.axis.encoding.XMLType.XSD_LONG );
  11.            
  12.             SOAPHeaderElement PlugParam = new SOAPHeaderElement(new javax.xml.namespace.QName("PlugParam" ));
  13.             //PlugParam.setNamespaceURI("http://tempuri.org/" );
  14.            
  15.             PlugParam.addChildElement("type" ).addTextNode("string" );
  16.             PlugParam.addChildElement("access" ).addTextNode("CredentialReadWrite" );
  17.             PlugParam.addChildElement("value" ).addTextNode("22" );
  18.             PlugParam.addChildElement("time" ).addTextNode("long" );
  19.             PlugParam.addChildElement("sender" ).addTextNode("string" );
  20.             PlugParam.addChildElement("recipient" ).addTextNode("string" );
  21.             PlugParam.addChildElement("operation" ).addTextNode("long" );
  22.            
  23.             SOAPElement CallBack = PlugParam.addChildElement("callsBack" );
  24.             SOAPElement PlugCallBack = CallBack.addChildElement("PlugCallBack" );
  25.             PlugCallBack.addChildElement("url" ).addTextNode("string" );
  26.             PlugCallBack.addChildElement("name" ).addTextNode("string" );
  27.             PlugCallBack.addChildElement("time" ).addTextNode("long" );
  28.            
  29.             SOAPElement aList = PlugCallBack.addChildElement("aList" );
  30.             aList.addChildElement("PlugField" ).addAttribute(new SOAPEnvelope().createName("xsi:nil" ),"true" );
  31.             aList.addChildElement("PlugField" ).addAttribute(new SOAPEnvelope().createName("xsi:nil" ),"true" );
  32.            
  33.             CallBack.addChildElement(PlugCallBack);
  34.            
  35.             call.addHeader(PlugParam);
  36.             Long ret = (Long) call.invoke(new java.lang.Object[] {new java.lang.Long(ticks)});
  37.            
  38.             System.out.println("Resultat : " + ret);
  39.         } catch (Exception e) {
  40.             System.err.println(e.toString());
  41.             e.printStackTrace();
  42.         }
  43.     }


Je :pt1cable:  :??:  :pt1cable: vraiment, donc si quelqu'un à une idée, je serais très reconnaissant !!!  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Axis][WSDL2Java] Modification des Headers SOAP

 

Sujets relatifs
modification de l'AS dans un swfun "fclose" après modification d'un fichier xml
récupérer la date de modification d'un fichiervb + modification dans mysql
Jtable Centrer le texte dans les "headers" !Service Web avec Axis et types complexes.
interdire la modification d'une feuille excel sauf avec userformModification dynamique de pages par internautes ?
Intégrer flux vidéo axis cgi à une page htmlModification de la fonction de conversation de PAM
Plus de sujets relatifs à : [Axis][WSDL2Java] Modification des Headers SOAP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR