Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-07-2014 12:05:49

celtic34fr
Nouveau membre
Date d'inscription: 10-07-2014
Messages: 3

[Résolu] pb de création WebService SOAP

Bonjour, je tente de mettre en place un WebService SOAP via le component SOAP de ZF2 (2.2.7).
contexte :
- prise de Zend Framework v2.2.7 de base sans aucun module externe installé
- création d'un modue MySOAP qui va tout héberger
  - module config.php :
<?php

return array(
    'controllers' => array(
        'invokables' => array(
            'MySOAP\Controller\Index' => 'MySOAP\Controller\IndexController',
        ),
    ),

    // The following section is new and should be added to your file
    'router' => array(
        'routes' => array(
            'album' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/mysoap[/:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id'     => '[0-9]+',
                    ),
                    'defaults' => array(
                        'controller' => 'MySOAP\Controller\Index',
                        'action'     => 'index',
                    ),
                ),
            ),
        ),
    ),

    'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',
        ),
    ),
);

  - création dans MySOAP/src/MySOAP/Services/service.API.php de la classe suivante :
<?php

namespace MySOAP\Services;

class servicesAPI {
   
    public function uploadFile($encoded, $name) {
        $location = ".\uploads\\" . $name;
        $current = str_replace(" ", "_", file_get_contents($location));
        $current = base64_decode($encoded);
        file_put_contents($location, $current);
        if ($name != "") {
            return "File Uploaded successfully...";
        } else {
            return "Please upload a file...";
        }
    }
}

  - dans MySOAP/src/MySOAP/Controller/IndexController.php
    public function soapAction() {
        // initialize server and set URI
        $server = new Server(null,
            array('uri' => 'http://localhost/ZF2Services/mysoap/wsdl'));

        // set SOAP service class
        $server->setClass(new servicesAPI());
       
        // handle request
        $server->setReturnResponse(true);
        $server->handle($this->request);

        return $this->getResponse();
    }

    public function wsdlAction() {
        // set up WSDL auto-discovery
        $wsdl = new AutoDiscover();

        // attach SOAP service class
        $wsdl->setClass(new servicesAPI());

        // set SOAP action URI
        $wsdl->setUri('http://localhost/ZF2Services/mysoap/soap');

        $wsdl->generate();
        $wsdl->dump("./wdls.xml");
        // handle request
        $wsdl->handle();
        return $this->getResponse();
    }

    public function clientAction() {
        $url = 'http://localhost/ZF2Services/mysoap/wsdl';

        if(sizeof($_POST)!= 0) {
            if(isset($_POST['submit'])) {
                $tmpfile = $_FILES["uploadfiles"]["tmp_name"];
                $filename = $_FILES["uploadfiles"]["name"];

                $handle = fopen($tmpfile, "r");
                $content =  fread($handle, filesize($tmpfile));
                fclose($handle);

                $decodeContent = base64_encode($content);
            }

            $client = new Client($url) or die("Error1");
            $response = $client->call('upload_file', array($decodeContent, $filename)) or die("Error2");

            if ($client->fault) {
                echo "Fault {$client->faultcode} <br />";
                echo "String {$client->faultstring} <br />";
            } else {
                print_r($response);
            }
       
            return $this->getResponse();
        } else {
            return new ViewModel();
        }
    }

dans MySOAP/view/my_soap/index/client.phtml
<form name="name1" method="post" action="" enctype="multipart/form-data">
    <input type="file" name="uploadfiles"><br />
    <input type="submit" name="submit" value="uploadSubmit"><br />
</form>

exécution :
-> http://localhost/ZF2Services/public/mysoap/wsdl renvoi le fichier WSDL de définition du service
-> http://localhost/ZF2Services/public/mysoap/soap renvoi une page vide (sans source)
-> http://localhost/ZF2Services/public/mysoap/client en premier renvoi le formulaire de choix de fichier à uploader, puis quand je demande l'upload => SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost/ZF2Services/mysoap/wsdl' : failed to load external entity "http://localhost/ZF2Services/mysoap/wsdl"

au vu de mon code, je ne comprends plus ce qui cloche. Je suis sous WAMP (Php 5.5.12)
Si quelqu'un a une idée, merci d'avance. Je suis bloqué et n'y comprends plus rien.

Celtic34FR

Dernière modification par Orkin (29-07-2014 14:30:46)

Hors ligne

 

#2 29-07-2014 08:12:50

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: [Résolu] pb de création WebService SOAP

Hello,
désolé pour le retard de ma réponse, tu a sans doute trouvé la solution à ton problème smile

En effet l'url que tu essai de load n'est pas valide : http://localhost/ZF2Services/public/mysoap/wsdl
(tu a oublié un petit public wink )

Hors ligne

 

#3 29-07-2014 10:24:53

celtic34fr
Nouveau membre
Date d'inscription: 10-07-2014
Messages: 3

Re: [Résolu] pb de création WebService SOAP

Salut,

cela ne venait pas de l'URL, mais pire, mon application génère des caractères en début de fichier en sortie, résultat l'XML est considéré comme en erreur sans l'être.
=>  j'ai du passer par les fonction Php ob_clean / ob_start, ... pour vider le buffer de la sortie standard avant de lancer l'écho envoyant l'XML (wsdl) et comme cela, c'est OK

sutout j'ai pu tester avec SoapUI mon service pour le mettre au point plus facilement. Ce soft existe pour Windows & Linux, le pied pour bien débugger, info à faire passer.

Merci pour ton aide.

Hors ligne

 

#4 29-07-2014 10:28:44

celtic34fr
Nouveau membre
Date d'inscription: 10-07-2014
Messages: 3

Re: [Résolu] pb de création WebService SOAP

la question est résolue, mais je ne trouve pas comment passer le sujet à [Résolu]

Hors ligne

 

#5 29-07-2014 10:47:33

JGreco
Administrateur
Date d'inscription: 22-12-2012
Messages: 432

Re: [Résolu] pb de création WebService SOAP

Salut, renomme juste ton titre en éditant ton premier message  et met [Résolu] devant smile


ZF2 et doctrine addict
profil stack overflow : http://stackoverflow.com/users/3333246/ … ab=profile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages