soap request Parameter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • soap request Parameter

    Hallo Community,
    ich kämpfe momentan mit der PHP Soap Implementierung.
    Ich versuche auf ein von Spring zur Verfügung gestelltes Webservice zuzugreifen, wobei die parameter manchmal über Attribute des XML-Tags übergeben werden.
    Ein gültiger Request würde wie folgt aussehen:
    Code:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:con="http://mynamespace">
       <soapenv:Header/>
       <soapenv:Body>
          <con:GetContainerRequest containerId="2">
             <!--Optional:-->
             <con:CustomFieldIds>
                <!--Zero or more repetitions:-->
                <con:CustomFieldId>1</con:CustomFieldId>
             </con:CustomFieldIds>
          </con:GetContainerRequest>
       </soapenv:Body>
    </soapenv:Envelope>
    Einen Parameter in den CustomFieldIds Tag zu scrheiben ist nicht das Problem. Mein Problem beginnt dort wo es um die containerId geht, die als Attribut übergeben wird.
    Wenn ich jetzt sowas code:
    Code:
    $obj = new stdClass;
                            $obj->containerId['_'] = "containerId";
                            $obj->containerId['containerId'] = $containerId;
                            if($customFieldIds!= null) {
                                    $cfIds = new stdClass;
                                    foreach($customFieldIds as $cfId) {
                                            $contIds->CustomFieldId[] = new SoapVar($cfId, XSD_STRING, null, null, null, SoapApi::$containerServiceNs);
                                    }
                                    $obj->CustomFieldIds = new SoapVar($cfIds, SOAP_ENC_OBJECT);
                            }
                           
                            $soapstruct = new SoapVar($obj, SOAP_ENC_OBJECT);
    
                            return $this->clientForContainerService->GetContainer(new SoapParam($soapstruct, "inputStruct"));
    kommt als Resultat folgendes:
    Code:
    <SOAP-ENV:Body>
                    <ns1:GetContainerRequest>
                            <containerId>
                                    <item>
                                            <key>_</key>
                                            <value>containerId</value>
                                    </item>
                                    <item>
                                            <key>containerId</key>
                                            <value>104</value>
                                    </item>
                            </containerId>
                    </ns1:GetContainerRequest>
            </SOAP-ENV:Body>
    Ich hab viele Beispiele im Netz gefunden mit einer "_"-Notation, aber ich muss was im Code falsch machen denn das klappt ja offensichtlich nicht.
    Weiß jemand von euch wie das funktionert.
    Danke im Vorhinein
    Thomas

  • #2
    Ich versuche auf ein von Spring zur Verfügung gestelltes Webservice zuzugreifen,
    Aha!
    (Kenne ich nicht)

    Stellt der Soap Service keine WSDL bereit?
    Wir werden alle sterben

    Kommentar


    • #3
      Zitat von combie Beitrag anzeigen
      Aha!
      (Kenne ich nicht)
      Spring (Framework) ? Wikipedia
      SpringSource.org |
      Stellt der Soap Service keine WSDL bereit?
      Doch. Darum weiß ich ja auch wie die korrekten Requests aussehen müssen.

      Kommentar


      • #4
        >>Stellt der Soap Service keine WSDL bereit?

        Doch. Darum weiß ich ja auch wie die korrekten Requests aussehen müssen.
        Dann nutze doch auch die wsdl Funktionalität....
        Warum willst du dich mit dem XML rum schlagen?

        In einem anderen Forum habe ich mal ein Tutorial geschrieben:
        Soap Client Tutorial
        Evtl. hilfts dir ja...
        Zuletzt geändert von combie; 22.12.2010, 12:35.
        Wir werden alle sterben

        Kommentar


        • #5
          versteh ichs richtig, wenn ich über die classmap gehe, würde er die Variablen in der jeweiligen Klasse auf die Parameter und Attribute des Requests mappen?

          Kommentar


          • #6
            Hmm...
            Im Grunde ja...

            Aber ob das nötig ist kann ich nicht sagen, da die URL auf die wsdl geheim ist.
            Wir werden alle sterben

            Kommentar


            • #7
              danke, funktioniert jetzt.
              Du hast mir sehr geholfen.
              Haben sich ja doch ein schlaues Konstrukt einfallen lassen die PHP Devs :-)

              Kommentar

              Lädt...
              X