begin process at 2012 05 31 19:45:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Server Web

 > 

Autre

 > 

web service


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

web service

mardi 24 février 2009 à 17:12:27 | web service

verbeyst

J'ai une question concernant les web services en php.
Le bout de code ci-après fonctionne bien quand je fait un appel client, il s'agit d'une version sans configuration du WSDL.
Par contre lorsque j'essaie de configurer le WSDL, je n'ai plus rien.
Ma méthode getListOfPatients(...)  exposée par mon web service ne me retourne  que "Array".


VERSION sans WSDL
------------------------

<?php

//importation de la librairie nuSOAP

require_once('nusoap/lib/nusoap.php');

// On crée un objet soap server

$server = new soap_server;

$server->register('getListofPatientsGP');

// Implémentation de la méthode web

// Cette méthode retourne la liste des Code Patient liés au médecin traitant dont le codeInami est

// passé en paramètre

function getListofPatientsGP($codeInami)

{

include ("connexion.php");

$codeInami=substr($codeInami,0,6); // abcd

if ($conn==false)

{return new soap_fault("Server", "Oracle", "echec connexion");

}

$query = 'BEGIN PKG_MED_EXT.PRC_GetListOfPatientsGP(:codeInami, :message); END;';

//préparer la requête sql avec oracle et retourner l'identifiant de la requête

$stmt = oci_parse($conn,$query);

//Si problème retourner un msg erreur

if (!$stmt)

{

//return 'stmt bad';

throw new soap_fault(-1,"failed to prepare query(reason :".oci_error(!$stmt).")");

}

//Associer une variable PHP à une variable SQL Oracle

oci_bind_by_name($stmt,":codeInami",$codeInami,6);

//oci_bind_by_name($stmt,":message",$message,32);

// Create a new cursor resource

$message = oci_new_cursor($conn);

// Bind the cursor resource to the Oracle argument

oci_bind_by_name($stmt,":message",$message,-1,OCI_B_CURSOR);

// exécution de la requête sql si problème msg erreur

if (!oci_execute($stmt))

{

//return 'oci_execute bad';

throw new soap_fault(-1,"failed to execute query (reason:".oci_error($stmt).")");

}

// Execute the cursor

oci_execute($message);

//return "a exécuté oci_execute_message";

oci_fetch_all($message, $cursor, null, null, OCI_FETCHSTATEMENT_BY_ROW);

return $cursor;

//include("Deconnexion.php");

}

//isset renvoie true si la variable est définie sinon renvoie false

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);

?>

VERSION avec configuration du WSDL
*******************************

<?php

//importation de la librairie nuSOAP

require_once('nusoap/lib/nusoap.php');

// On crée un objet soap server

$server = new soap_server;

//configuration de notre serveur SOAP

$server->configureWSDL('DBMGPWebService', 'DBMGPWebService');

$server->register(

'getListofPatientsGP', // method name

array('codeInami' => 'xsd:string'), // input parameters

array('return' => 'xsd:string'), // output parameters

'urn:DBMGPWebService', // namespace

'urn:DBMGPWebService#getListofPatientsGP', // SOAPAction

'rpc', // style

'encoded'

); // use*/

// Implémentation de la méthode web

// Cette méthode retourne la liste des Code Patient liés au médecin traitant dont le codeInami est

// passé en paramètre

function getListofPatientsGP($codeInami)

{ //return $codeInami;

include ("connexion.php");

// $codeInami=substr($codeInami,0,6);

if ($conn==false)

{throw new soap_fault("Server", "Oracle", "echec connexion");

}

//Procédure stockée

$query = 'BEGIN PKG_MED_EXT.PRC_GetListOfPatientsGP(:codeInami, :message); END;';

//préparer la requête stockée avec oracle et retourner l'identifiant de la requête

$stmt = oci_parse($conn,$query);

//Si problème retourner un msg erreur

if (!$stmt)

{

throw new soap_fault(-1,"failed to prepare query(reason :".oci_error(!$stmt).")");

}

//Associer une variable PHP à une variable SQL Oracle

oci_bind_by_name($stmt,":codeInami",$codeInami,6);

// Créer a new cursor resource

$message = oci_new_cursor($conn);

// Associer la variable curseur $message à l'argumentt correspondnat oracle

oci_bind_by_name($stmt,":message",$message,-1,OCI_B_CURSOR);

// exécution de la requête (de la procédure stockée) si problème msg erreur

if (!oci_execute($stmt))

{

throw new soap_fault(-1,"failed to execute query (reason:".oci_error($stmt).")");

}

// Exécuter le curseur

oci_execute($message);

$cursor = array();

oci_fetch_all($message, $cursor, null, null, OCI_FETCHSTATEMENT_BY_ROW);

include("Deconnexion.php");

return $cursor;

//return new soapval('return', 'xsd:array()',$cursor);

}

//isset renvoie true si la variable est définie sinon renvoie false

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);

?>



verbeyst
lundi 21 juin 2010 à 11:56:45 | Re : web service

thedarkkillerz

Bonjour,
j'ai eu le même problème, j'ai trouvé la solution içi:
http://www.nonplus.net/geek/000752.php

Dans cet exemple, la fonction exposée a le type de retour "ChapterArray"

Ligne de config NuSoap:
array('return' => 'tns:ChapterArray'),


Exemple:
//Déclaration du type complexe
$server->wsdl->addComplexType(
'Chapter',
'complexType',
'struct',
'all',
'',
array(
'title' => array('name'=>'title','type'=>'xsd:string'),
'page' => array('name'=>'page','type'=>'xsd:int')
)
);

//Déclaration du type complexe en version Array
$server->wsdl->addComplexType(
'ChapterArray',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Chapter[]')
),
'tns:Chapter'
);


J'espère que ça t'aidera..


Cette discussion est classée dans : message, server, stmt, oci, codeinami


Répondre à ce message

Sujets en rapport avec ce message

Récupération variable $message [ par _hatred_ ] Hello,J'ai un bout de script en PHP qui normalement, me permet de recevoir par mail, le contenu d'un form. Voici le script en question:$headers reception [ par henri12 ] salut j ai des retour courrier sur mon pc en local je lis sur mail server comment recuperer le courrier me@localhost.com merci de votre aide 20] A Comment ajouter dans un formulaire des informations? [ par Tanaka56 ] Bonjour à tous.Je possède ce petit formulaire ci-dessous. Seulement je voudrais reçevoir en même temps que le message, l'ip l'url et l'hôte de l'expéd web service en utilisant nusoap et php [ par verbeyst ] Bonjour à tous, ça fait  déjà 5 jours que je me casse la tête avec le problème qui suit :J'essaie de lancer un webservice en php  qui :1/se connecte à Drole de message d erreur !!!! [ par songes ] Un truc bizarre arrive de temps en temps. J ai ce message d'erreur :Server Error The following error occurred:The server closed the connection while r Formulaire TRES URGENT [ par Dominike ] > Bonjour à tous avec une mention particulière pour celui ou celle qui m'apportera son aide.> Je suis juste un petit bidouilleur amateur et je me born mail html ou text [ par LoRdKiFlEx ] voila je suis debutant est j'ai trouver un script qui envoie des e-mail en html et si le client mail ne les accepte pas en text normal. Seulement se s Affichage de données [ par must ] Salut,j'ai une base de données avec 5 enregistrements dans la baseComment faire pour faire ceci:a gauche:afficher une case à coherau milieu:résumé mes Envoi mail special [ par must ] partir d'une base de données si on supprime un message indesirable,comment prevenir celui qui a saisi message.Il a mis son adresse mailMais comment en Pb Windows Server 2003 / PHP [ par Crazyht ] Voila j'ai installé ce Week End mon tout nouveau Windows Serveur 2003 avec IIS 6, je lui colle mon php 4.3.x, et enfin installe phpMyAdmin et le confi


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,012 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales