2017-02-06 1 views
4

В процессе анализа ответа в использовании мыла Услуги модернизированных IAM напротив это исключение exception.My находится нижеСинтаксического Мыло Сервис использование Модернизированного я столкнулся исключение, как это (то есть) несогласованная модель тела в модели класса огибающей в ответ

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="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.router.ees.com/"> 
<soapenv:Header/> 
<soapenv:Body> 
    <web:verifyMobile> 
    <arg0>12345678</arg0> 
    </web:verifyMobile> 
</soapenv:Body> 
</soapenv:Envelope> 

Мой ответ

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

VerifyMobileResEnvelopeModel

@Root(name = "soap:Envelope") 
@Namespace(prefix = "soap", reference = "http://schemas.xmlsoap.org/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; 
} 
} 

VerifyMobileResBodyModel

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

public VerifyMobileResDataModel getVerifyMobileResModel() { 
    return verifyMobileResModel; 
} 

public void setVerifyMobileResModel(VerifyMobileResDataModel verifyMobileResModel) { 
    this.verifyMobileResModel = verifyMobileResModel; 
} 
} 

VerifyMobileResDataModel

@Root(name = "ns1:verifyMobileResponse", strict = false) 
@Namespace(prefix = "ns1", reference = "http://webservice.router.ees.com/") 
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()); 
     } 
    }); 
} 

Я столкнулся с проблемой синтаксического анализа. Но получить ответ. В методе, который он не приходит в блок ответа, блок отката выполняется, и он выдает это исключение. Его громоздко узнать проблему. Я много пробовал. Пожалуйста, помогите мне. Заранее спасибо.

Ответ в моем коде. Но он не пришел в ответ блокировать

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

ответ

0

слишком поздно, хотя, но это может помочь некоторым бедняга, как я, я столкнулась с аналогичной проблемой. Попробуйте установить «strict = false» в корневой теге ResponseBody следующим образом:

@Root(name = "soap:Envelope", strict = false) 
@Namespace(prefix = "soap", reference = "http://schemas.xmlsoap.org/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; } } 
Смежные вопросы