I'm having a problem using a SOAP::Lite mod_perl handler, and I can't seem to see what I'm missing.
Basically I've setup a section as such: <Location /soap> SetHandler perl-script PerlHandler SOAP::Handler </Location> And the module SOAP::Handler as such: use strict; use SOAP::Transport::HTTP; my $server = SOAP::Transport::HTTP::Apache -> dispatch_to('SOAP::Services'); sub handler { $server->handler(@_); } And then I've got all my calls in SOAP::Services. Now, it's actually working properly, but every request I get, I see this in the error log. [Tue Mar 18 17:24:10 2003] [error] [client 127.0.0.1] [libapreq] unknown content-type: `text/xml; charset=utf-8' Having a look in libapreq I find: if (r->method_number == M_POST) { const char *ct = ap_table_get(r->headers_in, "Content-type"); if (ct && strncaseEQ(ct, DEFAULT_ENCTYPE, DEFAULT_ENCTYPE_LENGTH)) { result = ApacheRequest_parse_urlencoded(req); } else if (ct && strncaseEQ(ct, MULTIPART_ENCTYPE, MULTIPART_ENCTYPE_LENGTH)) { result = ApacheRequest_parse_multipart(req); } else { ap_log_rerror(REQ_ERROR, "[libapreq] unknown content-type: `%s'", ct); result = HTTP_INTERNAL_SERVER_ERROR; } } else { and c/apache_request.h:#define DEFAULT_ENCTYPE "application/x-www-form-urlencoded" c/apache_request.h:#define DEFAULT_ENCTYPE_LENGTH 33 c/apache_request.h:#define MULTIPART_ENCTYPE "multipart/form-data" c/apache_request.h:#define MULTIPART_ENCTYPE_LENGTH 19 Creating a SOAP::Lite client and setting +trace => 'all', I see: Accept: text/xml Accept: multipart/* Content-Length: 530 Content-Type: text/xml; charset=utf-8 SOAPAction: "http://localhost/MEServices#CreateSession" <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsd="http://www.w3.org/1999/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> So SOAP::Lite is setting the Content-Type to "text/xml; charset=utf-8", but libapreq only accepts "application/x-www-form-urlencoded" or "multipart/form-data" or POST requests. Strangely though, the request does actually work, and the SOAP method does get called correctly. I haven't looked further into the code to see why this is. Anyway, I can't actually see how a mod_perl SOAP handler can work without getting this error message very time in the log, and I can't believe that no-one else has come across this before, and that I must be missing something very obvious... Can anyone help? Rob