У меня проблема с Perl-модулем Pod :: WSDL, но я пока не нашел ответа ... Я использую такой метод:
=pod
=begin WSDL
_DOC
Method hopefully returning a string
_IN parameter1 $string The first STRING parameter
_RETURN $string Returns a string
=end WSDL
=cut
sub go {
my ($this, $parameter1) = @_;
return($parameter1);
}
Проблема в следующем: вызов этого методасо строкой (скажем:
go("abc");
) все в порядке.
Вызов его со значением, которое является числом (скажем:
go("123");
),выдает тип возврата «xsd: int» вместо «xsd: string», как и следовало ожидать от «_RETURN $ string» ... Это полный построенный SOAP-конверт, если он может помочь:
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 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><goResponse xmlns="http://192.168.10.21/TestService"><s-gensym3 xsi:type="xsd:int">1</s-gensym3></goResponse></soap:Body></soap:Envelope>
Возвращение:
return("" . $parameter1);
не помогает.Возвращая что-то вроде этого:
return(" " . $parameter1);
действительно помогает, но я не хочу возвращаться ...: -)