Hi I am trying to make a soap request. I am using Retrofit
and SimpleXmlFactory
as the adapter. I have written the below data class for the soap request. But when making a request I am getting error like this:
org.simpleframework.xml.core.ConstructorException: Parameter 'soap:Body' does not have a match in class
Soap request:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://myserver.com/webservices/">
<soap:Header/>
<soap:Body>
<web:GetAvailablePasses>
<web:securityToken>*****</web:securityToken>
<web:userName>*****</web:userName>
<web:password>*****</web:password>
</web:GetAvailablePasses>
</soap:Body>
</soap:Envelope>
This is my data class:
@Root(name = "soap:Envelope")
data class GetAvailablePassesRequest(
@Element(name = "soap:Body", required = false)
val body: MyRequest
)
@Root(name = "soap:Body", strict = false)
data class MyRequest(
@Element(name = "web:GetAvailablePasses")
val getAvailablePasses: GetAvailablePasses
)
@Root(name = "web:GetAvailablePasses")
data class GetAvailablePasses(
@Element(name = "web:securityToken")
var securityToken: String,
@Element(name = "web:userName")
var userName: String,
@Element(name = "web:password")
var password: String
)
This is my ApiService interface:
@POST("FlashPassAPI.asmx")
fun getAvailablePasses(@Body request: GetAvailablePassesRequest): Single<GetAvailablePassesResponse>
What am I doing wrong?