IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

[SOAP] [VBA] Comment contourner le probleme des "Complex types" ?


Sujet :

XML/XSL et SOAP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Points : 29
    Points
    29
    Par défaut [SOAP] [VBA] Comment contourner le probleme des "Complex types" ?
    Bonjour,

    J'ai un probleme qui doit etre archi classique mais je ne trouve pas la maniere dele resoudre, donc je vous pose la question ;-)

    Precondition:
    Je ne connais pas SOAP mais je connais un peu l'XML et le VBA (VB sauce excel/word)

    Contexte:
    A partir d'une macro excel, je dois appeller une fonction d'un web service avec des parametres dont les valeurs sont dans une feuille excel

    Probleme:
    Lorsque je fais reference au service Web via le wizard Microsoft, la fonction est grisee et une erreur m'indique que cette fonction utilise des types de donnees trop complexe pour etre utilisee telle quelle et que la fonction ne sera pas integree dans la classe generee... or vous l'aurez compris, je cherche un moyen de resoudre/contourner le probleme...

    Donnnees :
    J'ai besoin de ne passer que certains parametres qui sont "plannedEffort" (dans <data>), "project" et "imes_No" (le reste est inutile, voire non implemente)

    Description XML de la fonction UpdateData dont il est question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?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:Body>
        <UpdateData xmlns="http://masociete.com/MONWEBSERVICE">
          <data>
            <title>string</title>
            <mainProject>string</mainProject>
            <author>string</author>
            <crType>string</crType>
            <Imes_Number>string</Imes_Number>
            <MelID>string</MelID>
            <functionality>string</functionality>
            <prio>string</prio>
            <description>string</description>
            <submitComment>string</submitComment>
            <OITS>string</OITS>
            <custRelCF>string</custRelCF>
            <plannedEffort>string</plannedEffort>
            <actualEffort>string</actualEffort>
            <severity>string</severity>
            <analysisComment>string</analysisComment>
            <status>string</status>
            <responsible>string</responsible>
            <Identifier>string</Identifier>
            <errorOccuredBaseline>string</errorOccuredBaseline>
            <errorFoundBaseline>string</errorFoundBaseline>
            <plannedBaseline>string</plannedBaseline>
            <whoFoundDepartment>string</whoFoundDepartment>
            <reqFlag>boolean</reqFlag>
            <actionRequired>boolean</actionRequired>
            <CRClassification_Reason>string</CRClassification_Reason>
            <CRClassification_Responsible>string</CRClassification_Responsible>
            <fatherProject>string</fatherProject>
            <fatherImesNumber>string</fatherImesNumber>
            <FileReferenceName>string</FileReferenceName>
            <FileReferenceOldVersion>string</FileReferenceOldVersion>
            <FileReferenceNewVersion>string</FileReferenceNewVersion>
          </data>
          <project>string</project>
          <imes_No>long</imes_No>
          <identifier>string</identifier>
          <relCustCR>string</relCustCR>
        </UpdateData>
      </soap:Body>
    </soap:Envelope>

    Pouvez-vous m'aider s'il vous plait ?
    Merci !

    Dji.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    J'ai un peu cherche sur le net et d'apres ce que j'ai lu, je dois me demerder tout seul pour generer un fichier XML au format SOAP en utilisant les fonctions natives de SOAP avec les parametres qui vont bien.

    J'ai trouve la portion de code qui fais ca apparemment, mais ca plante sur la dernier instruction de ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    URL = "https://masociete.com/MONWEBSERVICE/API.asmx"
        Uri = "urn:" & URL
        Method = "UpdateData"
        Dim Connector As SoapConnector
        Dim Serializer As SoapSerializer
        Dim Reader As SoapReader
        Set Connector = New HttpConnector
        Set Serializer = New SoapSerializer
        Set Reader = New SoapReader
        Connector.Property("EndPointURL") = URL
        Call Connector.Connect
        Connector.Property("SoapAction") = Uri & "#" & Method
        Call Connector.BeginMessage
        Serializer.Init Connector.InputStream
        ' build message
        Serializer.startEnvelope , ENC
        Serializer.SoapNamespace "xsi", XSI
        Serializer.SoapNamespace "SOAP-ENC", ENC
        Serializer.SoapNamespace "xsd", XSD
        ' build body
        Serializer.startBody
        Serializer.startElement Method, Uri, , "method"
        Serializer.startElement "data"
        Serializer.startElement "plannedEffort"
        Serializer.SoapAttribute "type", , "xsd:string", "xsi"
        Serializer.writeString str_effort
        Serializer.endElement 'plannedEffort
        Serializer.endElement 'data
        Serializer.startElement "project"
        Serializer.SoapAttribute "type", , "xsd:string", "xsi"
        Serializer.writeString str_proj
        Serializer.endElement 'project
        Serializer.startElement "number"
        Serializer.SoapAttribute "type", , "xsd:string", "xsi"
        Serializer.writeString str_number
        Serializer.endElement 'number
        Serializer.endBody
        ' end build body
        Serializer.endEnvelope
    L'erreur:
    Runtime error -2147467259 (800004005) Method 'endEnvelope' of object 'ISoapSerializer' failed

    Quelqu'un pourrai me filer un coup de main ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Petit question concernant ton appel a un web service
    Bonjour,
    je viens de m'inscrire sur ce forum car j'ai un soucis, je n'arrive pas a créer d'objet mssoap en vba (j'ai un message d'erreur qui me dit que le le composant actix ne peut pas créer d'objet)

    Pourrais-tu me dire comment tu as fait stp.

    Pour info j'utilise du vba excel pour faire appel a un web service.

Discussions similaires

  1. [VBA] comment modifier les items des collections
    Par tangjuncn dans le forum Général VBA
    Réponses: 2
    Dernier message: 18/02/2014, 16h37
  2. comment peut on ouvrir des fichier de type Shockwave Flash Object
    Par secondechance dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 22/07/2008, 20h09
  3. [VBA-W]Comment récupérer et assembler des documents ?
    Par vallou3 dans le forum VBA Word
    Réponses: 3
    Dernier message: 03/03/2006, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo