in reply to Re: How to disable autotyping of tags in response of SOAP-server?
in thread How to disable autotyping of tags in response of SOAP-server?

My SOAP-client send: <soap:Body><ns4:createRequestRequest><smev:Message xmlns:smev="http://smev.com/rev110801" soapenc:arrayType="xsd:anyType[10]" xsi:type="soapenc:Array"><smev:Sender soapenc:arrayType="xsd:anyType[2]" xsi:type="soapenc:Array"><MyCode xsi:type="xsd:string">FM</MyCode><Name xsi:type="xsd:string">FM</Name></smev:Sender><smev:Recepient soapenc:arrayType="xsd:string[2]" xsi:type="soapenc:Array"><MyCode xsi:type="xsd:string">RR</MyCode><Name xsi:type="xsd:string">RR</Name></smev:Recepient><smev:Originator soapenc:arrayType="xsd:string[2]" xsi:type="soapenc:Array"><MyCode xsi:type="xsd:string">FM</MyCode><Name xsi:type="xsd:string">FM</Name></smev:Originator><smev:TypeCode xsi:type="xsd:string">GSRV</smev:TypeCode><smev:Status xsi:type="xsd:string">REQUEST</smev:Status><smev:Date xsi:type="xsd:dateTime">2012-07-26T15:47:13.459+07:00</smev:Date><smev:ExchangeType xsi:type="xsd:int">2</smev:ExchangeType><smev:ServiceCode xsi:type="xsd:long">10000013628</smev:ServiceCode><smev:CaseNumber xsi:type="xsd:string">1/1</smev:CaseNumber><smev:TestMsg xsi:type="xsd:boolean">true</smev:TestMsg></smev:Message><smev:MessageData soapenc:arrayType="soapenc:Array[2]" xsi:type="soapenc:Array"><smev:AppData soapenc:arrayType="soapenc:Array[1]" xsi:type="soapenc:Array"><ns2:CreateRequestBean soapenc:arrayType="xsd:long[2]" xsi:type="soapenc:Array" xmlns:ns2="http://portal.fccland.ru/types/"><ns2:okato xsi:type="xsd:long">29202808001</ns2:okato><ns2:requestType xsi:type="xsd:long">558101010000</ns2:requestType></ns2:CreateRequestBean></smev:AppData><smev:AppDocument soapenc:arrayType="xsd:string[2]" xsi:type="soapenc:Array"><RequestCode xsi:type="xsd:string">req_ee0b4ef0-f1b3-4353-993a-368a33bc6435</RequestCode><BinaryData xsi:type="xsd:string">UEsDBBQAAAAIAGCr90DD5xxPD9gBANcGAgBUAAAAZGVtYW5kX2RjZWEwNDU2LWZiNDYtNDcxNC05</BinaryData></smev:AppDocument></smev:MessageData></ns4:createRequestRequest></soap:Body> It was not OK! After that I set soap->autotype(0); and my SOAP-client now send: <soap:Body><ns4:createRequestRequest><smev:Message xmlns:smev="http://smev.com/rev110801"><smev:Sender><MyCode>FMS001001</MyCode><Name>FMS</Name></smev:Sender><smev:Recepient><MyCode>RRTR01001</MyCode><Name>RRTR</Name></smev:Recepient><smev:Originator><MyCode>FMS001001</MyCode><Name>FMS</Name></smev:Originator><smev:TypeCode>GSRV</smev:TypeCode><smev:Status>REQUEST</smev:Status><smev:Date>2012-07-26T15:47:13.459+07:00</smev:Date><smev:ExchangeType>2</smev:ExchangeType><smev:ServiceCode>10000013628</smev:ServiceCode><smev:CaseNumber>1/1</smev:CaseNumber><smev:TestMsg>TRUE</smev:TestMsg></smev:Message><smev:MessageData><smev:AppData><ns2:CreateRequestBean xmlns:ns2="http://portal.com/types/"><ns2:okato>29202808001</ns2:okato><ns2:requestType>558101010000</ns2:requestType></ns2:CreateRequestBean></smev:AppData><smev:AppDocument><RequestCode>req_ee0b4ef0-f1b3-4353-993a-368a33bc6435</RequestCode><BinaryData>UEsDBBQAAAAIAGCr90DD5xxPD9gBANcGAgBUAAAAZGVtYW5kX2RjZWEwNDU2LWZiNDYtNDcxNC05</BinaryData></smev:AppDocument></smev:MessageData></ns4:createRequestRequest></soap:Body> It is OK! But in SOAP-server side problem with response saved:
<soap:Body><createRequestResponse xmlns="http://localhost/AnPackage" s +oapenc:arrayType="xsd:anyType[3]" xsi:type="soapenc:Array"><requestNu +mber xsi:type="xsd:string">1-13</requestNumber></createRequestRespons +e></soap:Body>
But it must be:
<soap:Body><createRequestResponse xmlns="http://localhost/AnPackage">< +requestNumber>1-13</requestNumber></createRequestResponse></soap:Body +>
without any types! How I can disable response typing on server?

Replies are listed 'Best First'.
Re^3: How to disable autotyping of tags in response of SOAP-server?
by Anonymous Monk on Dec 26, 2012 at 11:21 UTC
      I use basic SOAP::Data on SOAP-server:
      package AnPackage; use vars qw(@ISA); @ISA = qw(Exporter SOAP::Server::Parameters); sub createRequestRequest { my $self = shift; my $envelope = pop; my @RequestParams = $envelope->paramsin; my $RequestNumber = "1-13"; return SOAP::Data->name('createRequestResponse')->value( SOAP::Data->name( 'requestNumber' => $RequestNumber) ); } 1; __END__
      It is not help me(:
      In output:
      <?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><createRequestRequestResponse xmlns="http://localhost/AnPackage"><requestNumber xsi:type="xsd:string">1-13</requestNumber></createRequestRequestResponse></soap:Body></soap:Envelope>
      problem: exists<<<<xsi:type="xsd:string">>>>
      I test this:
      return SOAP::Data->name('createRequestResponse')->type(undef)->value( SOAP::Data->name('requestNumber')->type(undef)->value($RequestNum +ber) );

      but this is not decide problem...
        Try $self->serializer->autotype( 0 );