Тривиальный порт SOAP-рубинового кода в Perl SOAP :: Lite не работает - PullRequest
0 голосов
/ 20 ноября 2010

Этот код ruby ​​прекрасно работает:

require 'soap/wsdlDriver'
wsdl_url = 'http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl'
proxy = SOAP::WSDLDriverFactory.new(wsdl_url).create_rpc_driver
print proxy.NDFDgen(35.05,-106.65,"glance","2010-11-20T00:00:00","2010-11-20T07:00:00","temp")

Этот код Perl возвращает пустую строку:

use SOAP::Lite; 
$client = SOAP::Lite->new(proxy => "http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl"); 
$som = $client->call("NDFDgen", 35.05,-106.65,"glance","2010-11-20T00:00:00","2010-11-20T07:00:00","temp"); 
die $som->fault->{ faultstring } if ($som->fault); 
print $som->result, "\n"; 

Пожалуйста, скажите, почему? (код Perl - это почти прямое копирование / вставка из "perldoc SOAP :: Lite").

Ответы [ 2 ]

1 голос
/ 06 мая 2011

Рубиновый код, на который вы ссылаетесь, не работает должным образом - он вернет больше, чем просто «временный» прогноз. Смотри http://g.chasefox.net/clearos/ruby/noaa-nws-ndfd

А что касается perl-кода, я предлагаю рассмотреть пример NOAA. Они предоставили примеры на нескольких языках, одним из которых является perl, который использует SOAP :: Lite. Смотри: http://www.weather.gov/forecasts/xml/sample_products/ndfdXML.tar

print SOAP::Lite
      ->proxy('http://www.weather.gov/forecasts/xml/SOAP_server/ndfdXMLserver.php')
      ->uri('http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl')
      ->NDFDgen(SOAP::Data->name("latitude" => 35.05),
                SOAP::Data->name("longitude" => -106.65),
                SOAP::Data->name("product" => "glance"),
                SOAP::Data->name("startTime" => "2011-05-08T00:00:00"),
                SOAP::Data->name("endTime" => "2011-05-09T00:00:00"),
                SOAP::Data->name("weatherParameters" => 'blah') )
       ->result
1 голос
/ 20 ноября 2010

SOAP :: Lite общеизвестно сложно использовать - вы можете найти, что XML :: Compile :: SOAP работает лучше для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...