我在我的应用程序中使用经过改装的simplxmlconvertor来解析来自API的xml响应。 API的成功响应如下。
<Success>
<id>sf98hjf</id>
</Success>
下面给出了错误响应。
<Error>
<message>No data found</message>
</Error>
下面给出了我解析成功响应的模型类
@Root(name = "Success")
public class ResponseModel {
@Element
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
当我收到成功回复时,这很好用。但是我也想解析错误响应,以便向用户显示错误消息。我怎么能达到同样的目的。现在,由于结构不匹配,我遇到了异常。预先感谢。
答案 0 :(得分:1)
最后,我为我的问题找到了一个解决方案。我没有尝试解析2种不同的模型,而是截取了响应并添加了一个公共根元素。然后将“成功”和“错误”节点设为可选。因此,无论响应是成功还是错误,同一模型都会对其进行解析。代码如下。
public class XmlInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
ResponseBody body = response.body();
String wrappedBody = "<Response>" + body.string() + "</Response>";
return response.newBuilder()
.body(ResponseBody.create(body.contentType(), wrappedBody))
.build();
}
}
用于解析响应的模型类。
@Root(name = "Response")
public class UploadResponseModel {
@Element(required = false)
private UploadSuccessModel Success;
@Element(required = false)
private ErrorModel Error;
public UploadSuccessModel getSuccess() {
return Success;
}
public void setSuccess(UploadSuccessModel success) {
Success = success;
}
public ErrorModel getError() {
return Error;
}
public void setError(ErrorModel error) {
Error = error;
}
}