2010-07-05 6 views
0

J'ai un appel à un XMLRPC implémenté en Java que j'ai vérifié qui s'exécute sans exception et qui écrit la sortie. L'appel en Perl va comme ceci:Descripteur de fichier incorrect avec XMLRPC :: Lite en Perl

my $result = XMLRPC::Lite 
    -> proxy($url) 
    -> call("someMethod", 
       SOAP::Data->type(string => $par1), 
       SOAP::Data->type(string => $par2), 
       # etc... 
     ) 
    -> result; 

Mais je vérifier pour résultat $ et il ne se définit pas, je reçois Bad descripteur de fichier d'erreur. Que pourrait-il se passer? Ça fonctionnait avant, je ne peux pas penser à quelque chose d'important qui aurait pu changer ...

+0

Votre URL est-elle valide? Est-ce que '$ par1' et' $ par2' sont définis comme prévu? – Zaid

+0

Oui, le fichier XMLRPC réel est en cours d'exécution. J'ai placé des logs sur l'application et je sais avec certitude que le gestionnaire POST (servlet doPost()) se termine bien. Les problèmes d'URL et de paramètres peuvent donc être exclus. –

Répondre

0

OK, je l'ai trouvé, même si je ne comprends pas très bien pourquoi c'est arrivé. L'application XMLRPC fait ceci:

byte[] result = xServer.execute(request.getInputStream()); 

getLogger().log(new String(result)); 

response.setContentType("text/xml"); 
response.setContentLength(result.length); 
OutputStream out = response.getOutputStream(); 
out.write(result); 
out.flush(); 

getLogger().log("finished doPost"); 

Je vous connecter le résultat qui est envoyé à la sortie et donc je devrais obtenir dans la variable $ result du script Perl. Le résultat est XML généré via la bibliothèque Jdom. Alors que j'ai eu l'erreur, ce qui s'est connecté était un message XML indiquant un problème avec Jdom (fondamentalement, l'application n'a pas été entièrement recompilée avec cette version de la bibliothèque). Maintenant que cela fonctionne, le XML attendu est journalisé et assigné avec succès à $ resultat en Perl.

Cependant, étant donné que le tableau d'octets est un fichier XML dans les deux cas, je ne comprends pas très bien en quoi cela fait une différence pour l'appelant. Il ne cherchait même pas une structure XML donnée, l'appel a entraîné une erreur.

Tout aperçu à ce sujet sera apprécié. Cependant, le problème est résolu.