在R中,如果我有WSDL描述,我如何调用Web服务?(使用Web服务)

use*_*rJT 6 soap wsdl web-services r

我不是SOAP和WSDL的专家,但我有Perl代码,我想将其移植到R.

Perl代码看起来像这样(来自https://www.pharmgkb.org/resources/downloads_and_web_services.jsp):

use SOAP::Lite;
import SOAP::Data 'type';

sub main {
  my $argcount = scalar (@ARGV);
  if ($argcount != 1) {
    print "usage: diseases.pl <PharmGKB accession id>\n";
    exit -1;
  }

  # make a web services call to server
  my $call = SOAP::Lite
    -> readable (1)
    -> uri('PharmGKBItem')
    -> proxy('http://www.pharmgkb.org/services/PharmGKBItem')
    -> searchDisease($ARGV[0]);

  if ($call->fault) {
    print $call->faultcode . ": " . $call->faultstring . "\n";
  } else {
    my $result = $call->result;
Run Code Online (Sandbox Code Playgroud)

阅读有关rsoap和SSOAP包的内容,但没有得到任何好消息.我需要的是完全支持,例如调用服务并提供库来解析输出.我更喜欢一些库而不是原始编码.我对XML包很好,对RCurl不太好.我认为R中没有好的和当前的(积极维护的)支持是正确的吗?

Jef*_*len 5

OmegaHat上查看SSOAP包。它与 S 和 R 兼容。它甚至有一个genSOAPClientInterface函数,用于将 WSDL 中的可用操作生成为 R 函数,并为 WSDL 中描述的所有数据类型生成关联的 S4 类。它利用了 XML 和 RCurl(两者都是由同一作者创建的)。他提供了一个充满示例和非常有用的PDF 文档的目录

我在使用 WSDL 时遇到了一些问题(并且仍在使用修改后的代码使其工作),但是如果遇到问题,包的作者非常有帮助并且对错误报告做出响应。