2017-02-06 8 views
4

解析ソープサービスの使用私はこのexception.My例外が直面している耐震補強IAMのソープサービス利用における応答を解析中

を下回っている

応じてクラスエンベロープモデルでは、この(IE)の不一致体モデルのような例外が直面していますここで

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> 

マイ応答

0123です
<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

遅すぎるしかしそのけど、これは私のようないくつかの貧しい人々の魂を助けるかもしれない応答ブロックの内側に来ていない。しかし、私は同様の問題に直面しています。次のようにResponseBodyのルートタグに "strict = false"を設定してみてください。

@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; } } 
関連する問題