解析 Soap 服务使用 Retrofit 我在响应中的类包络模型中面临这样的异常(即)不匹配的主体模型

编程入门 行业动态 更新时间:2024-10-18 12:23:25
本文介绍了解析 Soap 服务使用 Retrofit 我在响应中的类包络模型中面临这样的异常(即)不匹配的主体模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在使用 Retrofit 的 Soap Services 中解析响应时遇到此异常.我的异常如下

While parsing response in Soap Services use of Retrofit iam facing this exception.My exception is below

Failure: org.simpleframework.xml.core.ElementException: Element 'Body' does not have a match in class org.cainfo.arun.model.response.VerifyMobileResEnvelopeModel at line 1

这是我的请求和回复

我的要求

<soapenv:Envelope xmlns:soapenv="schemas.xmlsoap/soap/envelope/" xmlns:web="webservice.router.ees/"> <soapenv:Header/> <soapenv:Body> <web:verifyMobile> <arg0>12345678</arg0> </web:verifyMobile> </soapenv:Body> </soapenv:Envelope>

我的回复

<soap:Envelope xmlns:soap="schemas.xmlsoap/soap/envelope/"> <soap:Body> <ns1:verifyMobileResponse xmlns:ns1="webservice.router.ees/"> <return>name</return> </ns1:verifyMobileResponse> </soap:Body> </soap:Envelope>

验证MobileResEnvelopeModel

VerifyMobileResEnvelopeModel

@Root(name = "soap:Envelope") @Namespace( prefix = "soap", reference = "schemas.xmlsoap/soap/envelope/") public class VerifyMobileResEnvelopeModel { @Element(name = "soap:Body", required = false) private VerifyMobileResBodyModel verifyMobileResBodyModel; public VerifyMobileResBodyModel getVerifyMobileResBodyModel() { return verifyMobileResBodyModel; } public void setBody(VerifyMobileResBodyModel verifyMobileResBodyModel) { this.verifyMobileResBodyModel = verifyMobileResBodyModel; } }

验证MobileResBodyModel

VerifyMobileResBodyModel

@Root(name = "soap:Body", strict = false) public class VerifyMobileResBodyModel { @Element(name = "ns1:verifyMobileResponse", required = false) @Namespace(prefix = "ns1", reference = "webservice.router.ees/") private VerifyMobileResDataModel verifyMobileResModel; public VerifyMobileResDataModel getVerifyMobileResModel() { return verifyMobileResModel; } public void setVerifyMobileResModel(VerifyMobileResDataModel verifyMobileResModel) { this.verifyMobileResModel = verifyMobileResModel; } }

验证MobileResDataModel

VerifyMobileResDataModel

@Root(name = "ns1:verifyMobileResponse", strict = false) @Namespace(prefix = "ns1", reference = "webservice.router.ees/") public class VerifyMobileResDataModel { @Element(name = "return", required = false) private String customerName; public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } }

方法

public void getResponse() { VerifyMobileRqstDataModel mVerifyMobileRqstDataModel = new VerifyMobileRqstDataModel(); mVerifyMobileRqstDataModel.phoneNo = mobileNo; VerifyMobileRqstBodyModel mVerifyMobileRqstBodyModel = new VerifyMobileRqstBodyModel(); mVerifyMobileRqstBodyModel.verifyMobileRqstDataModel = mVerifyMobileRqstDataModel; VerifyMobileRqstEnvelopeModel mVerifyMobileRqstEnvelopeModel = new VerifyMobileRqstEnvelopeModel(); mVerifyMobileRqstEnvelopeModel.verifyMobileRqstBodyModel = mVerifyMobileRqstBodyModel; Call<VerifyMobileResEnvelopeModel> call = webService.rqstVerifyMobileNo(mVerifyMobileRqstEnvelopeModel); call.enqueue(new Callback<VerifyMobileResEnvelopeModel>() { @Override public void onResponse(Call<VerifyMobileResEnvelopeModel> call, Response<VerifyMobileResEnvelopeModel> response) { if (response.isSuccessful() && response.body() != null) { // String customerName = response.body().verifyMobileResBodyModel.verifyMobileResModel.customerName; String customerName = response.body().getBody().getVerifyMobileResModel().getCustomerName(); Log.i("CustomerName", customerName); } } @Override public void onFailure(Call<VerifyMobileResEnvelopeModel> call, Throwable t) { Log.e("Failure", t.getMessage()); } }); }

我正面临一些解析问题.但得到回应.在该方法中,它没有进入响应块,失败块被执行并抛出此异常.找出问题很麻烦.我尝试了很多.请任何人帮助我.提前致谢.

I am facing some parsing issue. But getting the respone. In the method its not coming to response block, failure block get executed and it throws this exception. Its cumbersome to find out issue. I tried a lot. Please anyone help me. Thanks in advance.

我的代码中的响应.但它没有进入响应块

Response in my code. But it didn't come inside the response block

<soap:Envelope xmlns:soap="schemas.xmlsoap/soap/envelope/"> <soap:Body> <ns1:verifyMobileResponse xmlns:ns1="webservice.router.ees/"> <return>Ramesh</return> </ns1:verifyMobileResponse> </soap:Body> </soap:Envelope>

推荐答案

虽然为时已晚,但这可能会帮助像我这样的可怜人,我也遇到过类似的问题.尝试在 ResponseBody 的根标签中设置strict = false",如下所示

Its too late though but this might help some poor soul like me, I have faced similar issue. Try by setting "strict = false" in root tag of ResponseBody as follows

@Root(name = "soap:Envelope", strict = false) @Namespace( prefix = "soap", reference = "schemas.xmlsoap/soap/envelope/") public class VerifyMobileResEnvelopeModel { @Element(name = "soap:Body", required = false) private VerifyMobileResBodyModel verifyMobileResBodyModel; public VerifyMobileResBodyModel getVerifyMobileResBodyModel() { return verifyMobileResBodyModel; } public void setBody(VerifyMobileResBodyModel verifyMobileResBodyModel) { this.verifyMobileResBodyModel = verifyMobileResBodyModel; } }

更多推荐

解析 Soap 服务使用 Retrofit 我在响应中的类包络模型中面临这样的异常(即)不匹配的主体模型

本文发布于:2023-11-26 20:46:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1635137.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:包络   模型   我在   不匹配   主体

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!