detergentex
detergentex copied to clipboard
Problem with erlsom parsing
I get the following error:
iex(1)> Detergentex.call("http://webapi.allegro.pl/service.php?wsdl", "doQuerySysStatus", [])
** (throw) {:error, 'Struct doesn\'t match model: recordtype not expected: p:doQuerySysStatus'}
(erlsom) src/erlsom_write.erl:357: :erlsom_write.findAlternative/4
(erlsom) src/erlsom_write.erl:258: :erlsom_write.processSubType/5
(erlsom) src/erlsom_write.erl:241: :erlsom_write.processElementValues/7
(erlsom) src/erlsom_write.erl:132: :erlsom_write.struct2xml/6
(erlsom) src/erlsom_write.erl:323: :erlsom_write.processAlternativeValue/8
(erlsom) src/erlsom_write.erl:241: :erlsom_write.processElementValues/7
(erlsom) src/erlsom_write.erl:116: :erlsom_write.struct2xml/6
(erlsom) src/erlsom_write.erl:323: :erlsom_write.processAlternativeValue/8
even if I have this operation listed:
iex(2)> Detergentex.init_model("http://webapi.allegro.pl/service.php?wsdl")
{:wsdl,
[
{:operation, 'serviceService', 'servicePort', 'doQuerySysStatus',
'serviceBinding', 'https://webapi.allegro.pl/service.php',
'#doQuerySysStatus'},
...
{:model,
[{:type, :_document, :sequence,
[{:el,
[
{:alt, :"p:doQuerySysStatusResponse", :"p:doQuerySysStatusResponse", [],
1, 1, true, :undefined},
...
]
}]}]}
]
...
}
What may be the reason?
I've had some problems with erlsom and nested structures. I have tried sending tuples and maps but no success so far. Are you still experiencing these problems ?
same problem here...I'm not able to make it work. Any suggestion?
I'm experiencing the same issue. See the following Stack Overflow question for more information and a similar stack trace: Elixir call Axis2 Java SOAP Web Service with detergentex and detergent
I just found something that might be helpful. http://erlang.org/pipermail/erlang-questions/2008-July/036759.html you might have to bypass detergentex and try it with :detergent first.
@sveinfid I get somewhere different with this:
wsdl = :detergent.initModel('http://www.thomas-bayer.com/axis2/services/BLZService?wsdl','p')
:detergent.call(wsdl, 'getBank', [], '123')
But still missing something.