Неверный файловый дескриптор с XMLRPC :: Lite в Perl - PullRequest
0 голосов
/ 05 июля 2010

У меня есть вызов к XMLRPC, реализованному на Java, который, как я убедился, работает без исключений и записывает вывод. Вызов в Perl выглядит так:

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

Но затем я проверяю на $ result, и он не определен, я получаю Bad file descriptor error Что может случиться? Это работало раньше, я не могу вспомнить ничего существенного, что могло измениться ...

1 Ответ

0 голосов
/ 05 июля 2010

ОК, я нашел это, хотя я не совсем понимаю, почему это произошло. Приложение XMLRPC делает это:

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");

Я записываю результат, который отправляется на вывод, и поэтому я должен получить его в переменной $ result сценария Perl. Результатом является XML, созданный с помощью библиотеки Jdom. В то время как я получил сообщение об ошибке, в журнал вошел XML, содержащий сообщение об ошибке, указывающее на проблему с Jdom (в основном, приложение не было полностью перекомпилировано в эту версию библиотеки).

Теперь, когда он работает, ожидаемый XML-файл регистрируется и успешно присваивается $ result в Perl.

Однако, поскольку байтовый массив является XML в обоих случаях, я не совсем понимаю, как это имеет значение для вызывающей стороны. Он даже не искал данную структуру XML, вызов привел к ошибке.

Любое понимание этого будет оценено. Однако проблема решена.

...