From: David Cantrell Date: 15:34 on 08 Oct 2004 Subject: SOAP::Lite must die Yet again, SOAP::Lite is behaving in unexpected ways. If I have a chunk of text, which is utf-8, and return it from my SOAPy method, SOAP::Lite base64-encodes it before sending it over the network, for no apparent reason. This behaviour is undocumented. The most excellent Claes Jacobssen told me how to fix it on IRC, but the fix involves using an undocumented package supplied with SOAP::Lite in an undocumented way. From what I can tell, the philosophy behind the documentation for this appalling module is "it was hard to write, so it should be hard to use". This is, even though it appears to work, AWFUL software. Of course, it doesn't help that I'm having to expose my SOAP::Lite-ish server to another piece of awful software - .net. .net is unnecessarily picky and pedantic about, well, everything. It needs to have every little detail explained to it in triplicate or it throws its toys on the floor.
From: David Wheeler Date: 18:46 on 08 Oct 2004 Subject: Re: SOAP::Lite must die On Oct 8, 2004, at 7:34 AM, David Cantrell wrote: > This is, even though it appears to work, AWFUL > software. Amen! /me Hallelujahs multiple times. My favorite SOAP::Lite hack is the need to create functions named for exception classes in the SOAP::Serializer namespace to catch one's own exceptions and serialize them to send to the client. Also completely undocumented. For those interested in how this works, using Exception::Class, I just do this: BEGIN { # Setup routines to serialize Exception::Class-based exceptions. It needs # to look like this (no, I'm not kidding): # sub SOAP::Serializer::as_Bric__Util__Fault__Exception__GEN { # [ $_[2], $_[4], escape_html($_[1]->error) ]; # } foreach my $ec (Exception::Class::Base->Classes) { $ec =~ s/::/__/g; eval qq{sub SOAP::Serializer::as_$ec { [ \$_[2], \$_[4], escape_html(\$_[1]->error) ]; }}; } } But that took forever to figure out! Regards, David
Generated at 10:27 on 16 Apr 2008 by mariachi