【发布时间】:2015-05-22 21:56:29
【问题描述】:
有人可以验证这个 sn-p 并指出我可能做错了什么吗?
这是我创建和执行 SOAP 调用的代码。
my $soap = SOAP::Lite->new()->proxy($proxy)->ns('http://example.com', 'ser')->getInfo(
SOAP::Data->name(chronicId => $ticket_num)->prefix('ser'),
SOAP::Data->name(sourceSystem => $sourceSystem)->prefix('ser'),
SOAP::Data->name(outputFormat => $outputFormat)->prefix('ser'),
SOAP::Data->name(uid => $uid)->prefix('ser'),
SOAP::Data->name(username => $username)->prefix('ser'),
SOAP::Data->name(guid => $guid)->prefix('ser')
);
$results = $soap->call($method);
这是我使用测试脚本执行上述代码时得到的结果。
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:getChronicInfoResponse xmlns:ns="http://example.com">
<ns:return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">
{
"UID":"abc1234",
"GUID":"",
"CHRONICID":123,
"OUTPUTFORMAT":"json",
"USERNAME":"xyz",
"STATUS_SUB_CODE_NAME":"Active",
"SOURCESYSTEM":"abc",
"STATUS_NAME":"Open"
}
</ns:return>
</ns:getChronicInfoResponse>
</soapenv:Body>
</soapenv:Envelope>
但是,当我尝试将 Web 服务器响应读入一个变量并打印出来时,我得到的只是一个 1(虽然它不是空的),没有别的。输出应该是 JSON,如上所示,然后我需要对其进行解析。
任何猜测我可能做错了什么?我是 Perl 新手,所以这可能是一件愚蠢的事情。
【问题讨论】:
-
您实际上是如何访问 ws 响应并尝试打印内容的?如果您怀疑那里有错误,您应该显示该代码。
-
看起来响应正文是正确的。请展示您正在做什么以访问其中的 JSON,或者更确切地说,您正在做什么以每次获取
1 -
除非您禁用了反序列化,否则您的变量
$results将是一个SOAP::SOM对象。我建议你use Data::Dump和dd $results->body这样你就可以更好地看到你有什么。如果您需要任何进一步的帮助,您还应该显示转储程序输出
标签: json perl client perl-module