【问题标题】:Access web service in PERL在 PERL 中访问 Web 服务
【发布时间】:2012-04-12 10:33:18
【问题描述】:

我正在通过 perl 脚本访问托管在 IIS 中的 Web 服务。我有一个方法在服务中,它返回一个字符串数组。我无法读取服务的响应。通过使用 Dumper,我打印了服务返回的响应,在那里我可以看到数组值,但我无法访问数组值。如何访问从 Web 服务方法返回的 thr 数组值。

perl中方法的调用:

my $method2 = SOAP::Data->name('getCustInfo')->attr({xmlns => 'http://tempuri.org/'});
my @param=(SOAP::Data->name(custId=>$custid));
my $response1= $soap->call($method2=>@param);
print $response1;

print Dumper $response1;

@result11=$response1->result;
print Dumper $response1;
$i=-1;
foreach my $result(@result11)
{
  ++$i;
  print $result[$i];
}


上面的代码是我用来访问该方法的,我正在尝试打印它,但它不能正常工作:HASH(0x3a84518)$VAR1 = undef;
有什么问题。

谢谢,
阿维纳什

【问题讨论】:

  • 请包含 Dumper 输出。
  • @user1126070,他做到了。这是$VAR1 = undef

标签: web-services perl


【解决方案1】:

在知道响应之前检查调用是否发生。

使用严格; 使用警告;

use SOAP::Lite +trace=>"debug"; # it debugs whether the connection is set or not

my ($soap,$proxy,$uri);

eval {
    $soap  = new SOAP::Lite
             proxy=>$proxy,
             uri=>$uri;
};

    if ( $@ ){
     print " Service Down\n";
     }

对于soap调用,它需要代理和uri,请在eval中检查它们是否可访问。

【讨论】:

  • 警告读者:不要使用间接方法调用 (new SOAP::Lite)。如今,直接致电 (SOAP::Lite->new(...)) 几乎是普遍的首选。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多