2012-03-27 10 views
5

Nie jestem ekspertem od SOAP i WSDL, ale mam kod Perl, które chciałbym portu do R.w R, jak mogę połączyć się z usługą sieciową, jeśli mam jej opis WSDL? (Zużywają usługi internetowej)

Kod Perl wygląda następująco (od 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; 

Przeczytałeś o pakietach rsoap i SSOAP, ale nie otrzymałeś żadnych ciekawych informacji. Potrzebne jest pełne wsparcie, takie jak wywołanie usługi i udostępnienie bibliotek do analizy danych wyjściowych. Wolę raczej biblioteki niż kodowanie surowe. Jestem dobry z pakietem XML i niezbyt dobry z RCurl. Mam rację myśląc, że nie ma dobre i aktualne (aktywnie utrzymywane) wsparcie w R dla tego?

Odpowiedz

4

Zamówienie na pakiet SSOAP na OmegaHat. Jest kompatybilny zarówno z S, jak i R. Ma nawet funkcję genSOAPClientInterface do generowania dostępnych operacji w WSDL jako funkcje R i generowania powiązanych klas S4 dla wszystkich typów danych opisanych w WSDL. Wykorzystuje XML i RCurl (oba zostały stworzone przez tego samego autora). Zapewnia on directory full of examples i całkiem przydatny .

Miałem z tym kilka problemów podczas korzystania z mojego WSDL (i nadal używam zmodyfikowanego kodu, aby go uruchomić), ale autor pakietu jest niezwykle pomocny i reaguje na zgłoszenia błędów, jeśli napotkasz problemy.

+2

Pakiet jest również na GitHub: https://github.com/omegahat/SSOAP –

0

Próbowałem użyć pakietu SSOAP, ale wydaje się on być dość przestarzały z zestawem problemów, w tym zerwanymi zależnościami na innych pakietach, konfliktami przestrzeni nazw i nieskończonymi rekursjami. Jest również usuwany z Cran wraz z pakietem XMLSchmea, od którego zależy.

Użyłem zamiast tego SOAP UI w połączeniu z RCurl i było to o wiele bardziej udane podejście. Przykład RCurl można znaleźć w innym poście: https://stackoverflow.com/a/34516458/5189780.

SOAP UI to bardzo łatwe w użyciu narzędzie do testowania i eksplorowania serwisów internetowych SOAP. Zapewnia kod XML dla żądań SOAP. Ten plik XML może zostać skopiowany i użyty w kodzie R, aby utworzyć treść żądania RCurl.