Perl 中带有 XMLRPC::Lite 的错误文件描述符
Posted
技术标签:
【中文标题】Perl 中带有 XMLRPC::Lite 的错误文件描述符【英文标题】:Bad file descriptor with XMLRPC::Lite in Perl 【发布时间】:2010-07-05 14:39:07 【问题描述】:我调用了一个用 Java 实现的 XMLRPC,我已经验证了它可以无异常运行并写入输出。 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 错误。 会发生什么?它以前工作过,我想不出任何可能发生的重大变化......
【问题讨论】:
您的网址有效吗?$par1
和 $par2
是否按预期定义?
是的,实际的 XMLRPC 正在成功执行。我已经在应用程序上放置了日志,并且我确定 POST 处理程序 (servlet doPost()) 可以正常结束。所以可以排除URL和参数问题。
【参考方案1】:
好的,我找到了,虽然我不太明白为什么会这样。 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");
我正在记录发送到输出的结果,因此我应该在 Perl 脚本的 $result 变量中获取它。结果是通过 Jdom 库生成的 XML。 当我收到错误时,记录的是一个 XML,其中包含一条指示 Jdom 问题的错误消息(基本上,该应用程序没有完全重新编译到该版本的库)。
现在它可以工作了,预期的 XML 已被记录并成功分配给 Perl 中的 $result。
但是,由于字节数组在这两种情况下都是 XML,我不太明白它对调用者有何影响。它甚至没有寻找给定的 XML 结构,调用导致了错误。
对此的任何见解将不胜感激。不过问题解决了。
【讨论】:
以上是关于Perl 中带有 XMLRPC::Lite 的错误文件描述符的主要内容,如果未能解决你的问题,请参考以下文章