Subject: | _deserialize_complex_type still called when response object body is empty |
Certain objects, like UpdateKeywordsResponse have a soap reply that
looks like this:
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:Trackin
gId xmlns:h="https://adcenter.microsoft.com/v6">9942e621-a488-47c8-9573-
c
6f3bbef3ab6</h:TrackingId></s:Header><s:Body><UpdateKeywordsResponse
xmlns="https://adcenter.microsoft.com/v6"/></s:Body></s:Envelope>
Which causes a fatal error. Starting at line 162 in Service.pm, the
_invoke method checks that $som->body is defined and that
$response_body->{$response_name} exists. If those checks pass, it then
calls _deserialize_complex_type which throws a fatal error when trying
to use the type passed to it due to the fact that the body value
returned is an empty string.
As a temporary fix, I have altered my local Service.pm to check if the
body is '' and then return, else go on to the deserialize call.