2012-03-27 17 views
5

Ben SOAP ve WSDL uzmanı değilim (web hizmeti tüketmek) ama Perl kodu (https://www.pharmgkb.org/resources/downloads_and_web_services.jsp itibaren) şöyle R., WSDL açıklamasının olması durumunda bir web hizmetini nasıl arayabilirim?

için liman istiyoruz Perl kodu vardır:

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 ve SSOAP paketleriyle ilgili bilgileri okuyun, ancak hiç hoş bir bilgi almadı. İhtiyacım olan şey, hizmeti aramak ve çıktıları ayrıştırmak için kitaplıklar sağlamak gibi tam destek. Bazı kütüphaneleri daha sonra ham kodlamayı tercih ederim. Ben XML paketi ile iyi ve RCurl ile çok iyi değilim. Bunun için R'de iyi ve güncel (aktif olarak) destek bulunmadığını düşünmekte haklıyım?

cevap

4

OmegaHat üzerindeki SSOAP paketini gözden geçirin. Hem S hem de R ile uyumludur. Hatta, WSDL'deki R işlemleri olarak kullanılabilir İşlemleri oluşturmak ve WSDL'de açıklanan tüm veri türleriniz için ilişkili S4 sınıflarını oluşturmak için bir genSOAPClientInterface işlevine sahiptir. XML ve RCurl (her ikisi de aynı yazar tarafından oluşturulmuş) kullanır. O bir directory full of examples sağlar ve oldukça yararlı PDF documentation.

WSDL'mi kullanırken (ve hala çalışmaya başlamak için değiştirilmiş kod kullanmaya devam ediyorum) kullanırken birkaç sorunla karşılaştım, ancak sorun yaşıyorsanız, paketin yazarı, son derece yararlı ve hata raporlarına yanıt veriyor.

+2

Paket de GitHub'da: https://github.com/omegahat/SSOAP –

0

SSOAP paketini kullanmayı denedim, ancak diğer paketlerdeki bozuk bağımlılıklar, ad alanı çakışmaları ve sonsuz yinelemeler de dahil olmak üzere sorunların bulunduğu bir bankayla oldukça eskimiş görünüyor. Ayrıca, bağlı olduğu XMLSchmea paketiyle birlikte Cran'den kaldırılır.

Bunun yerine RCurl ile birlikte SOAP UI kullandım ve çok daha başarılı bir yaklaşım oldu. RCurl örneği başka bir gönderide bulunabilir: https://stackoverflow.com/a/34516458/5189780. SOAP web hizmetlerinin sınanması ve araştırılması için aracı kullanmak çok kolay olan

SOAP UI. SOAP istekleri için XML kodu sağlar. Bu XML, RCurl isteğinin bir gövdesini oluşturmak için kopyalanabilir ve R kodunda kullanılabilir.

İlgili konular