в R, как я могу вызвать веб-сервис, если у меня есть описание WSDL? (использовать веб-сервис) - PullRequest
6 голосов
/ 27 марта 2012

Я не эксперт по 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;

Прочитал информацию о пакетах rsoap и SSOAP, но не получил никакой хорошей информации. Что мне нужно, так это полная поддержка, например, вызов службы и предоставление библиотек для анализа выходных данных. Я предпочитаю некоторые библиотеки, а не сырое кодирование. Я хорош с пакетом XML и не очень хорошо с RCurl. Я прав, полагая, что в R нет хорошей и текущей (активно поддерживаемой) поддержки для этого?

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

Оформить заказ на пакет SSOAP на OmegaHat.Он совместим как с S, так и с R. Он даже имеет функцию genSOAPClientInterface для генерации доступных операций в WSDL как функции R и генерации связанных классов S4 для всех ваших типов данных, описанных в WSDL.Он использует XML и RCurl (оба были созданы одним и тем же автором).Он предоставляет каталог , полный примеров и весьма полезный документ PDF .

У меня было несколько проблем с ним при использовании WSDL (и я до сих пор использую модифицированный код длязаставить его работать), но автор пакета чрезвычайно полезен и реагирует на сообщения об ошибках, если вы сталкиваетесь с проблемами.

0 голосов
/ 29 сентября 2017

Я пытался использовать пакет SSOAP, но, похоже, он устарел из-за множества проблем, в том числе из-за сломанных зависимостей от других пакетов, конфликтов пространства имен и бесконечных рекурсий.Он также удаляется из Cran вместе с пакетом XMLSchmea, от которого он зависит.

Вместо этого я использовал SOAP UI в сочетании с RCurl, и это был гораздо более успешный подход.Пример RCurl можно найти в другом посте: https://stackoverflow.com/a/34516458/5189780.

SOAP UI - очень простой в использовании инструмент для тестирования и исследования веб-сервисов SOAP.Он предоставляет XML-код для запросов SOAP.Этот XML может быть скопирован и использован в коде R для формирования тела запроса RCurl.

...