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

API, COM et SDKs Delphi Discussion :

API Popfax Method implemented


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 43
    Par défaut API Popfax Method implemented
    Bonjour,

    Je tente désespérément d'utiliser l'API de Popfax.com avec Delphi, sans
    succès. Je n'arrive pas à m'authentifier auprès du service via les
    méthodes fournies par l'API.


    Dans un premier temps, j'importe le WSDL dans mon projet Delphi (
    https://api3.popfax.com/?service=Popfax&wsdl ).
    Puis voici comment je procède :


    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var
       service : PopfaxServicePortType;
       header : AuthenticationHeader;
       customer : integer;
    begin
       service := GetPopfaxServicePortType(true, '', nil);
       header := AuthenticationHeader.Create;
       header.email := 'email';
       header.password := 'password';
     
     
       service.PopfaxService_AuthenticationHeader(header);
       customer := service.PopfaxService_authenticate;
    end;



    A l’exécution du programme, j'obtiens l'erreur : "Method
    'NS1: PopfaxService.AuthenticationHeader' not implemented : metohd name or
    namespace not recognized".

    C'est étrange car cette méthode est bien présente dans le WSDL importé, en
    voici un extrait :


    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Espace de nommage : urn:PopfaxService
    // transport : http://schemas.xmlsoap.org/soap/http
    // style : rpc
    // utiliser : encoded
    // Liaison : PopfaxServiceBinding
    // service : PopfaxService
    // port : PopfaxServicePort
    // URL : https://api3.popfax.com/index.php?service=Popfax
     
    PopfaxServicePortType = interface(IInvokable)
    ['{39077948-1854-B114-B68A-A881DD795EBF}']
    procedure PopfaxService_AuthenticationHeader(const header:
    AuthenticationHeader); stdcall;


    Auriez-vous une piste ?
    Malheureusement, les exemples fournis dans le documentation de l'api ne
    m'aide pas.

    Lien vers la documentation de l'api : http://www.popfax.com/docs/m2popfax.pdf

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 43
    Par défaut
    Bonjour,

    Je pense progresser dans l'identification du problème. J'ai essayé d'utiliser l'API avec PHP. Résultat : cela fonctionne bien ( après l'activation du module openSSL).

    Voici le code :

    Code PHP : 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
     
    <?php
    	ini_set("soap.wsdl_cache_enabled", "0"); 
    	$username = 'identifiant';	
    	$password= 'password';
     
    	$usernameToken = array(
    		'email' => $username,
    		'password' => $password);
     
    	$wsse_ns = "http://schemas.xmlsoap.org/ws/2002/07/secext";
    	$SoapVarUser = new SoapVar($username, XSD_STRING, NULL, $wsse_ns, NULL, $wsse_ns);
    	$SoapVarPass = new SoapVar($password, XSD_STRING, NULL, $wsse_ns, NULL, $wsse_ns);
    	$wsse_auth = new SoapVar($usernameToken, SOAP_ENC_OBJECT, NULL, $wsse_ns, 'AuthenticationHeader', $wsse_ns);
     
    	$header=new SoapVar($wsse_auth, SOAP_ENC_OBJECT, NULL, $wsse_ns, 'Security', $wsse_ns);
    	$wsse_header = new SoapHeader($wsse_ns, 'AuthenticationHeader', $header, true);
     
     
    	$wsdl = "https://api3.popfax.com/?service=Popfax&wsdl";
     
     
    	try 
    	{
    		$client = new SoapClient($wsdl);
     
    		$client->__setSoapHeaders(array($wsse_header));
     
    		$response = $client->__SoapCall('PopfaxService.getAccountInfo',array());
     
    		var_dump($response);
    	} 
    	catch(Exception $e) 
    	{
    		echo $e;
    	}
     
    ?>

    Avant l'activation du module OpenSSL, j'avais l'erreur :

    ] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://api3.popfax.com/?service=Popfax&wsdl' : failed to load external entity
    J'ai l'impression que l'erreur semble identique avec celle de Delphi.
    En PHP, je n'ai pas besoin de gérer les certificats. Je pense donc que c'est la même chose avec Delphi.
    Je pense que Delphi ne parvient pas à accéder au WSDL, peut-être à cause du SSL? Il y a-t-il un manière particulière de gérer le SSL?

    Bref, avez-vous la moindre piste ?

Discussions similaires

  1. API java methodes
    Par Javamar dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 17/07/2009, 09h47
  2. Réponses: 0
    Dernier message: 30/03/2009, 15h51
  3. Probleme avec la recherche directe de methodes sur une Class (API java.lang.reflect)
    Par CyberChouan dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 25/01/2007, 17h12
  4. Réponses: 4
    Dernier message: 06/10/2006, 13h11
  5. [XML/java]QUEL API? quel methode
    Par valal dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 30/08/2006, 10h43

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