【发布时间】:2019-03-27 11:07:47
【问题描述】:
您好,我是 android 编程新手,我已经浏览了一些关于如何使用改造来解析 XML 响应的链接,我尝试了下面的 XML,如图所示。
我必须在 POJO 类中做任何必要的更改吗?但在 Logcat 中出现 NullPointer 异常。当我试图阅读响应时。
谁能帮帮我看看。
这是我对登录 API 的 XML 响应。
[
这是我的 MainActivity 代码。任何人都可以建议哪里出错了。
RequestBody requestBody = RequestBody.create(MediaType.parse("text/xml"), strRequestBody);
Call<LoginResponseEnvelope> call = RetrofitGenerator.getProductInterfaceApi().Login(requestBody);
call.enqueue(new Callback<LoginResponseEnvelope>() {
@Override
public void onResponse(Call<LoginResponseEnvelope> call, Response<LoginResponseEnvelope> response) {
progressbar.setVisibility(View.GONE);
if (response != null) {
try {
Log.d("LoginResponse", "success response :" + response.body());
LoginResponseEnvelope loginResponseEnvelope = response.body();
} catch (Exception e) {
e.printStackTrace();
}
/* if (loginResponseEnvelope != null) {
Log.d("LoginResponse", "success loginResponseEnvelope :" + loginResponseEnvelope.toString());
String status = loginResponseEnvelope.getBody().getLoginResponseData().getLoginResult().getLoginInfo().toString();
Intent intent = new Intent(MainActivity.this, SuccessActivity.class);
startActivity(intent);
}*/
}
/*if (loginResponseEnvelope!=null){
}*/
}
@Override
public void onFailure(Call<LoginResponseEnvelope> call, Throwable t) {
progressbar.setVisibility(View.GONE);
Log.d("LoginResponse", "failure response :" + t.getMessage());
}
});
这是我为 XML 响应改造的 POJO 类。
public class LoginResponseEnvelope {
@Element(name = "Body", required = false)
private LoginResponseBody body;
public LoginResponseBody getBody() {
return body;
}
public void setBody(LoginResponseBody body) {
this.body = body;
}
@Override
public String toString() {
return "LoginResponseEnvelope{" +
"body=" + body +
'}';
}
@Root(name = "Body", strict = false)
public class LoginResponseBody {
@Element(name = "LoginResponse", required = false)
private LoginResponseData loginResponseData;
public LoginResponseData getLoginResponseData() {
return loginResponseData;
}
public void setLoginResponseData(LoginResponseData loginResponseData) {
this.loginResponseData = loginResponseData;
}
@Root(name = "LoginResponse", strict = false)
@Namespace(reference = "http://tempuri.org/")
public class LoginResponseData {
@Element(name = "LoginResult", required = false)
private LoginResult loginResult;
public LoginResult getLoginResult() {
return loginResult;
}
public void setLoginResult(LoginResult loginResult) {
this.loginResult = loginResult;
}
@Root(name = "LoginResult", strict = false)
public class LoginResult {
@Element(name = "Result", required = false)
private LoginInfo loginInfo;
public LoginInfo getLoginInfo() {
return loginInfo;
}
public void setLoginInfo(LoginInfo loginInfo) {
this.loginInfo = loginInfo;
}
@Root(name = "Result", strict = false)
@Namespace(reference = "")
public class LoginInfo {
@Element(name = "Success", required = false)
private Success success;
public Success getSuccess() {
return success;
}
public void setSuccess(Success success) {
this.success = success;
}
@Root(name = "Success", strict = false)
public class Success {
@ElementList(name = "CompanyDetails", inline = true)
private List<Company> companyDetails;
public List<Company> getCompanyDetails() {
return companyDetails;
}
public void setCompanyDetails(List<Company> companyDetails) {
this.companyDetails = companyDetails;
}
@Root(name = "CompanyDetails", strict = false)
public class Company {
@Element(name = "Id", required = false)
private String id;
@Element(name = "Name", required = false)
private String Name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
}
}
}
}
}
}
}
【问题讨论】:
标签: android xml-parsing retrofit