标签: soaplite

Perl/Soap lite:"服务器无法处理请求.对象引用未设置为对象的实例"

我正在尝试使用已经存在且完美运行的Web服务.在阅读了许多教程和示例之后,我终于设法从服务器获得了答案:

服务器无法处理请求.你调用的对象是空的

WS只允许您从NT登录中获取和ID(一个字符串参数,一个字符串答案).

这是我的perl脚本:

#!perl -w
use strict;
use warnings;

use LWP::UserAgent; 
use SOAP::Lite on_action => sub { "$_[0]$_[1]"; };
use LWP::Debug; LWP::Debug::level('+'); SOAP::Lite->import(+trace => 'all');
#use SOAP::Lite  +trace =>  'debug';
#sub SOAP::Transport::HTTP::Client::get_basic_credentials { return ('user' => 'pwd') };
use Data::Dumper;

my $var = SOAP::Data->new(name => 'NTLogin', value => "1234", type =>'s:string');

my $resultLogin = SOAP::Lite
  -> uri('http://xxxxx')
  -> proxy('http://yyyyy/zzzzz/directory.asmx')
  -> on_action( sub { join '/', @_ } )
  -> GetUIDFromNTLogin($var);

print "lets test it...\n\n";

  print $resultLogin;
  print "\nresult():\n";
  print …
Run Code Online (Sandbox Code Playgroud)

perl soap web-services soaplite

8
推荐指数
1
解决办法
6320
查看次数

Perl SOAP :: Lite和请求对象的服务描述

我正在使用Perl SOAP::Lite来访问由WSDL定义的远程Web服务.这意味着我有:

use strict;
use Data::Dumper;
use SOAP::Lite +trace => 'debug';

my $service = SOAP::Lite->service('http://path/wsdl');
Run Code Online (Sandbox Code Playgroud)

好到目前为止.问题是我需要访问HTTP::Request对象以发送自定义HTTP请求标头(我不是在谈论身份验证标头).看起来我可以在成功调用后访问请求对象:

my $result = $service->getClient('parameters');
print Dumper($service->transport->http_request);
Run Code Online (Sandbox Code Playgroud)

那会给我正确的HTTP::Request对象:

$VAR1 = bless( {
             '_content' => '',
             '_uri' => undef,
             '_headers' => bless( {}, 'HTTP::Headers' ),
             '_method' => undef
           }, 'HTTP::Request' );
Run Code Online (Sandbox Code Playgroud)

如果我在执行autoDispatch($service->getClient部件)之前尝试访问请求对象,则传输对象为空,我无法修改请求.如果我SOAP::Lite->proxy顺便说一句,似乎一切都会正常工作- 但这会破坏预先定义的服务定义的有用性.

任何想法,我想如何从服务定义访问请求对象,而不必先打电话?鸡蛋和鸡蛋问题真的......

谢谢!

perl wsdl soaplite

6
推荐指数
1
解决办法
761
查看次数

Perl soap :: lite和复杂数据

我使用perl soap :: lite来构建一个Web服务客户端.该实现适用于简单方法,例如需要单个标量参数.EG,以下工作正常.

#!/usr/bin/perl

use warnings;
use SOAP::Lite  +trace=>debug;
use strict;
use Data::Dumper;
$SOAP::Constants::PREFIX_ENV = 'SOAP-ENV';
my $base="https://XXXX:60001/GDBIncidentWebService/Config?wsdl&style=rpc";
my $user="XXXX";
my $pwd="XXXX";

my $lite = SOAP::Lite -> readable(1)
                  -> service($base) ;
my @res=$lite->readIncident("123456");
print Dumper(\@res);
exit;
sub SOAP::Transport::HTTP::Client::get_basic_credentials { return $user => $pwd ; }
Run Code Online (Sandbox Code Playgroud)

我需要调用一个需要更复杂的参数集的方法(一些标量加一个键值对数组).我想我应该使用SOAP :: Data模块正确地序列化我的数据但是无法使它工作.即使是"简单"的方法(如上所述)似乎也不起作用.EG(仅显示从上面的脚本更改的行):

my $arg= SOAP::Data->new()->type('xs:string')-> value("20054106");
my @res=$lite->readIncident($arg);
Run Code Online (Sandbox Code Playgroud)

产量:

String value expected instead of SOAP::Data reference
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何想法?非常感谢 !这里参考的是我脚本中调用的方法的wsdl

 <wsdl:operation name="readIncident">
  <soap:operation soapAction=""/>
  <wsdl:input>
    <soap:body use="literal" namespace="urn:GDBIncidentWebServiceVi" parts="ticketID "/>
  </wsdl:input>
  <wsdl:output>
    <soap:body use="literal" namespace="urn:GDBIncidentWebServiceVi"/> …
Run Code Online (Sandbox Code Playgroud)

perl soap wsdl soaplite

5
推荐指数
1
解决办法
1239
查看次数

有没有办法同时拥有同一个Perl库的两个版本?

我想迁移我的应用程序使用的perl库(SOAP :: Lite).为了尽可能顺利地为最终用户进行迁移,我想让这个库的两个版本(旧版本和新版本)并行工作.

目标是让最终用户随时随地迁移他们的脚本(如果需要).所以基本上,对于旧脚本,用户无需更改,新脚本将使用新版本编写.

有谁知道继续前进的方法?

perl soaplite

5
推荐指数
1
解决办法
207
查看次数

将PHP SoapClient转换为Perl SOAP :: Lite

我正在编写一个与Five9 API一起使用的Web应用程序。我有一个有效的PHP脚本,该脚本使用API​​来打印出第一个用户的电子邮件。我的应用程序在Perl中,并且我正尝试避免将其外壳到PHP脚本中。我尝试使用SOAP :: Lite,但遇到了困难。这是我的工作PHP脚本。

#!/usr/bin/php
<?php

$soap = null;
$wsdl = "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl";

$user = "johnsmith@example.com";
$pass = "password";

$soap_options = array("login" => $user, "password" => $pass, "trace" => 1);

$soap = new SoapClient($wsdl, $soap_options);

$arryParams['userNamePattern'] = '';

$result = $soap->getUsersInfo($arryParams);

if(isset($result->return)) {
    $objRecords = $result->return;
    print $objRecords[0]->generalInfo->EMail;
    print "\n";

}

?>
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我在perl和SOAP :: Lite上的工作

#!/usr/bin/env perl

use warnings;
use strict;

use MIME::Base64;
use Data::Dumper;
use SOAP::Lite +trace => [ transport => sub { print $_[0]->as_string } ];

my $wsdl_five9 = …
Run Code Online (Sandbox Code Playgroud)

php perl soap-client soaplite five9

5
推荐指数
0
解决办法
235
查看次数

使用Soap Lite和perl的自定义字段在JIRA中创建问题的问题

我用以下代码敲击肥皂api.我的目标是创建一个包含自定义字段的票证.如果您注释掉自定义字段部分,则此代码可以正常工作.知道发生了什么事吗?

my $soap = SOAP::Lite->service($wsdl);
my $token = $soap->login($_jira_user,$_jira_pass);

my $customFields = [
    {'customFieldId' => $_cf_map{'severity'},'values' => [SOAP::Data->type('string', $severity)]},
    {'customFieldId' => $_cf_map{'outage_start'}, 'values' => [SOAP::Data->type('string', $start)]},
    {'customFieldId' => $_cf_map{'no_auto_close'}, 'values' => [SOAP::Data->type('string', $no_auto_close == 1 ? 'Yes': 'No')]},
    {'customFieldId' => $_cf_map{'nco_serials'}, 'values' => [SOAP::Data->type('string', $serial_string)]},
    {'customFieldId' => $_cf_map{'services'}, 'values' => \@services},
];

my $remoteIssueHash = {
    'project' => SOAP::Data->type('string' => $_projectkey),
    'type' => SOAP::Data->type('string' => $_issuetype),
    'summary' => SOAP::Data->type('string' => $summary),
    'reporter' => SOAP::Data->type('string' => $user),
    'assignee' => SOAP::Data->type('string' …
Run Code Online (Sandbox Code Playgroud)

perl soap jira soaplite

5
推荐指数
1
解决办法
2574
查看次数

SOAP::Lite Perl 模块发送错误的 SOAP 信封命名空间

我在编写 SOAP/XML 客户端以与一家名为 Domainbox 的公司提供的 API 对话时遇到问题。我正在使用 SOAP::Lite 模块/库在 Perl 中编写客户端。我收到以下错误消息:

可能的 SOAP 版本不匹配:Envelope 命名空间http://schemas.xmlsoap.org/soap/envelope/是意外的。期待http://www.w3.org/2003/05/soap-envelope

这是因为库使用 SOAP 1.1 命名空间发送 SOAP 信封,而服务器需要 SOAP 1.2。

但是我想不出一个解决方案,我已经尝试明确设置 $soap->soapversion('1.2'); 在 SOAP::Lite 对象中,但这只会影响响应消息中收到的信封,而不影响客户端发送的信封。

服务器正在运行 ASP.net 并且似乎不想接受 SOAP 1.1 版消息。

默认情况下,查询soapversion() 方法返回1.1 版,当我将其更改为1.2 时,它返回1.2,但在内部它显然在某处忽略了这一点。

WSDL 似乎没有正确定义 xmlns:soap 或 xmlns:soap12 但 SOAP::Lite 也没有使用这些命名空间。我会提供一个链接,但我不能在这里发布两个以上的链接。

我也尝试使用 SOAP::Lite 的 service() 方法,但这根本没有区别。

这是我正在使用的代码:

#!/usr/bin/perl -w
use strict;
use SOAP::Lite;
use Data::Dumper;

### API Info
my $reseller = 'Removed';
my $username = 'Removed';
my $password  = 'Removed';

my …
Run Code Online (Sandbox Code Playgroud)

xml perl soap web-services soaplite

5
推荐指数
1
解决办法
1532
查看次数

Perl:无法使用SSL访问Web服务

这是我的第一个Perl脚本.我已经使用CPAN安装了SOAP :: Lite,它似乎已经没问题了.

我正在尝试访问一个简单的HelloWorld .NET Web服务.我收到的错误似乎与Perl或SOAP :: Lite无法验证SSL证书有关.

虽然它看起来像是返回500的代码,但是我创建了一个能够很好地调用web方法的Java客户端,所以我认为问题不在Web服务端.

任何人都可以指出我正确的方向,我将如何工作?

脚本:

#!/usr/bin/perl

use SOAP::Lite 'trace', 'debug';

$api_ns = "https://www.mydomain.com/edgedev/";
$api_url = "https://www.mydomain.com/edgedev/ws.asmx";
$action = "HelloWorld";

my $soap = SOAP::Lite
                -> readable(1)
                -> ns($api_ns, 'tns')
                -> proxy($api_url)
                -> on_action(sub { return "\"$action\""});

print $soap->HelloWorld()->result;
Run Code Online (Sandbox Code Playgroud)

结果

<soap:Envelope 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:tns="https://www.mydomain.com/edgedev/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <tns:HelloWorld xsi:nil="true" />
      </soap:Body>
</soap:Envelope>
SOAP::Transport::HTTP::Client::send_receive: 500 Can't connect to www.mydomain.com:443 (certificate verify failed)
Content-Type: text/plain
Client-Date: Tue, 12 Feb 2013 16:40:28 GMT
Client-Warning: Internal response

Can't connect …
Run Code Online (Sandbox Code Playgroud)

perl cpan soaplite

3
推荐指数
1
解决办法
1万
查看次数

Perl中Web服务的客户端

我是客户端 - 我希望调用Web服务的方法.

我有一个Web服务地址(.svc后缀),我有方法的名称,返回值和他们的参数.

该服务使用WCF(HTML端点)实现.我想把这些方法称为SOAP::Lite.我应该为URI,代理以及如何调用方法编写什么?

perl web-services perl-module client-side soaplite

0
推荐指数
1
解决办法
2368
查看次数

标签 统计

perl ×9

soaplite ×9

soap ×4

web-services ×3

wsdl ×2

client-side ×1

cpan ×1

five9 ×1

jira ×1

perl-module ×1

php ×1

soap-client ×1

xml ×1