Retourner Un Tableau d'Objets en PHP Web Service
Je veux retourner un tableau de l'article objets dans PHP, web service, à l'aide de nuSOAP v 1.114. Voici comment j'ai configuré le fichier WSDL:
$server->wsdl->addComplexType(
'ArticleType',
'complexType',
'struct',
'all',
'',
array('articleId' => array('name'=>'articleId', 'type'=>'xsd:int'),
'heading' => array('name'=>'heading', 'type'=>'xsd:string'),
'text' => array('name'=>'text', 'type'=>'xsd:string')
)
);
$server->wsdl->addComplexType(
'ArrayOfArticleType',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref' => 'SOAP-ENC:arrayType',
'wsdl:arrayType' => 'tns:ArticleType[]' //ArticleType[]
)
),
'tns:ArticleType'
);
Mon PHP Article de classe est très simple:
class Article {
public $articleId;
public $heading;
public $text;
public function __construct($articleId, $heading, $text=NULL) {
$this->articleId = $articleId;
$this->heading = $heading;
$this->text = $text;
}
}
Si je reviens juste d'un nouvel Article Objet, comme ceci:
function TestArrayReturn() {
$arr = new Article(12345, "Test heading", "Test text.");
//$arr2 = array($arr);
return $arr;
}
la fonction, enregistré comme:
$server->register("TestArrayReturn", array(), array('return'=>'tns:ArticleType'), $namespace, $namespace."#TestArrayReturn", 'rpc', 'encoded', 'Test function');
fonctionne très bien, et renvoie l'article comme si c'est un Tableau. Cependant, si je l'ai essayer et renvoyer un ArrayOfArticleType (la ligne commentée dans TestArrayReturn() ), et de s'inscrire à la fonction de type de retour tns:ArrayOfArticleType, alors il échoue avec l'Erreur: Erreur HTTP: pas de données après les en-têtes HTTP.
Si, toutefois, j'ai créer un TABLEAU de TABLEAUX manuellement, comme suit:
$arr = array("articleId"=>12345, "heading"=>"Test heading", "text"=>"Test text");
$arr2 = array("articleId"=>12345, "heading"=>"Test heading", "text"=>"Test text");
return array($arr, $arr2);
ça marche!? Quel est le problème avec mon ArrayOfArticleType description WSDL qui ne permet pas à sérialiser correctement ArticleType objets, mais sérialiser correctement un tableau associatif avec les mêmes propriétés ("articleId", "titre", "texte") ??
Désolé pour le code, mais je pense qu'il est nécessaire d'identifier l'erreur, je suis surplombant. Toute aide appréciée, j'ai eu du mal avec la mise en place du WSDL de ce service que pour des jours.
OriginalL'auteur gouwsmeister | 2009-09-22
Vous devez vous connecter pour publier un commentaire.
J'ai fixé cette erreur. Pour toute personne intéressée, ce qui semble être un bug dans NuSOAP. Vous DEVEZ enregistrer votre returnType pour la fonction que xsd:Tableau pour qu'il renvoie correctement le tableau, même si correcte WSDL constituerait comme "tns:ArrayOfArticleType'. J'ai trouvé ça dans certains Drupal code source:
Espère que cela aide quelqu'un d'autre qui a lutté avec le même problème.
Je ne suis pas en PHP. Où voulez-vous mettre ce code?
OriginalL'auteur gouwsmeister
Ici est un exemple à la fois le client et le serveur pour savoir comment retourner un tableau avec php web service.C'est l'exemple facile à comprendre
http://my-source-codes.blogspot.com/2011/10/php-web-service-return-array.html
OriginalL'auteur nikunj gandhi