使用SSOAP包

时间:2014-06-25 16:01:33

标签: r soap

我正在尝试使用SSOAP包访问网络服务器。我很难搞清楚如何处理成功.SOAP()电话的结果。

以下是user's guide

的示例
    s1 <- SOAPServer("services.soaplite.com", "interop.cgi")
    test <- .SOAP(s1,
      "echoString", "From R",
      action="urn:soapinterop",
      xmlns=c(namesp1="http://soapinterop.org/"),
      handlers =NULL)

这似乎有效,返回List of 2,其中标题信息位于第一个列表中,内容位于第二个列表中:

> str(test)
List of 2
 $ header : Named chr [1:8] "Wed, 25 Jun 2014 15:53:31 GMT" "Apache" "SOAP::Lite/Perl/0.55" "534" ...
  ..- attr(*, "names")= chr [1:8] "Date" "Server" "SOAPServer" "Content-Length" ...
 $ content: chr "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SOAP-ENV:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP"| __truncated__
 - attr(*, "class")= chr "SOAPHTTPReply"

我需要对content做一些有用的事情,即把它变成某种R对象。如果我正确地遵循了用户手册,我应该可以使用convertFromSOAP()。注意 - 手册引用了fromSOAP()功能,该功能似乎不再存在,但仔细阅读显示covertFromSOAP()的包内容。然而,这失败了:

> convertFromSOAP(test)
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘convertFromSOAP’ for signature ‘"SOAPHTTPReply"’

正如我尝试过的那个功能的所有其他化身一样。

有人想过如何从.SOAP()命令中获取可用的R对象吗?或者您可以建议SSOAP包的替代品吗?

谢谢! -Chase

1 个答案:

答案 0 :(得分:1)

该示例关闭所有处理程序,因此您可以自己解析XML字符串:

xpathApply(xmlParseDoc(test$content),'//return',xmlValue)

SSOAP文档很难。