I wanted to build an awesome place for people to discuss module specific issues, but I don't have any more time for this, and there are much better places to discuss Perl-related issues. I'd recommend asking your question on Stack Overflow or on Perl Monks.
If you are looking for a Perl tutorial or Perl-related news, I hope these links will serve you well.
Posted on 2011-09-29 10:32:22.03433-07 by russianbear
Perl SoapLite Deserialization Problem
I am attempting to consume a SoapLite Envelope. I successfully make the "roundtrip" - however the problem is occurring when I attempt to deserialize the response from my WebService. The exact message is such:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <s:Fault> <faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation / +dispatcher">a:InternalServiceFault </faultcode> <faultstring xml:lang="en-US">Specified cast is not valid.</faultstring><detail> <Exception +Detail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3. +org/2001/XMLSchema-instance"><HelpLink i:nil="true"/><Inne rException i:nil="true"/><Message>Specified cast is not valid.</Message><StackTrace> at ReadCondi +tionFromXml(XmlReaderDelegator , XmlObjectSerializerRead Context , XmlDictionaryString[] , XmlDictionaryString[] )&#xD; at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, Xml +ObjectSerializerReadContext context)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContrac +t dataContract, XmlReaderDelegator reader)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDele +gator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDele +gator xmlReader, Int32 id, RuntimeTypeHandle declaredTyp eHandle, String name, String ns)&#xD; at ReadArrayOfConditionFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictiona +ryString , XmlDictionaryString , CollectionDataContract )&#xD; at System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader +, XmlObjectSerializerReadContext context)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContrac +t dataContract, XmlReaderDelegator reader)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDele +gator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDele +gator xmlReader, Int32 id, RuntimeTypeHandle declaredTyp eHandle, String name, String ns)&#xD; at ReadCriteriaFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString +[] , XmlDictionaryString[] )&#xD; at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, Xml +ObjectSerializerReadContext context)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContrac +t dataContract, XmlReaderDelegator reader)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDele +gator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDele +gator xmlReader, Int32 id, RuntimeTypeHandle declaredTyp eHandle, String name, String ns)&#xD; at ReadCollectionJobSettingsFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDic +tionaryString[] , XmlDictionaryString[] )&#xD; at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, Xml +ObjectSerializerReadContext context)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContrac +t dataContract, XmlReaderDelegator reader)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDele +gator reader, String name, String ns, Type declaredType, DataContract&amp; dataContract)&#xD; at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDele +gator xmlReader, Type declaredType, DataContract dataCon tract, String name, String ns)&#xD; at System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xml +Reader, Boolean verifyObjectName, DataContractResolver d ataContractResolver)&#xD; at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegato +r reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)&#xD; at System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Bo +olean verifyObjectName)&#xD; at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterP +art(XmlDictionaryReader reader, PartInfo part, Boolean i sRequest)&#xD; at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameter( +XmlDictionaryReader reader, PartInfo part, Boolean isReq uest)&#xD; at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameters +(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters, Boolean isRequest)&#xD; at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDi +ctionaryReader reader, MessageVersion version, String ac tion, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)&#xD; at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Ob +ject[] parameters, Boolean isRequest)&#xD; at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[ +] parameters)&#xD; at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc&amp; rpc +)&#xD; at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)&#xD; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)& +#xD; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&amp; rpc) +&#xD; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&amp; rpc)& +#xD; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&amp; rpc) +&#xD; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&amp; rpc)& +#xD; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&amp; rpc)& +#xD; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&amp; rpc) +&#xD; at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc&amp; rpc)& +#xD; at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</StackTrace> +<Type>System.InvalidCastException</Type></ExceptionDetai l> </detail> </s:Fault> </s:Body> </s:Envelope>
I think the problem is there is a cast that isn't happening upon deserialization, but looking at the garbage above, it's difficult to figure out which of my data members can't make the cast. Can anybody understand what the above error message is attempting to tell me???
Direct Responses: Write a response