为了检查 Person
是否存在,我使用 RESTful 资源,通过 GET 访问该资源,如下所示:
GET http://api.my-site.com/persons?id=254
例如,我可以获得以下响应:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persons id="http://api.my-site.com/persons" size="2" offset="0" total="2">
<person>
<id>http://api.my-site.com/person/1</id>
</person>
<person>
<id>http://api.my-site.com/person/2</id>
</person>
</persons>
如果有人或我收到此回复:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persons id="http://api.my-site.com/persons" size="0" offset="0" total="0"/>
如果没有人。
我使用 Jersey
在 Java 中执行 GET,如下所示:
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
...
boolean checkIfPersonExist(String uri){
Client client = Client.create();
WebResource webResource = client.resource(uri);
ClientResponse response = webResource
.accept("application/xml")
.get(ClientResponse.class);
String output = response.getEntity(String.class);
现在我想检查我的 Response
中是否有 Persons
。目前,我只是检查 total="0"
是否在我的 Response
内。
if (response.getStatus() == OK) {
return !output.contains("total=\"0\"");
} else {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}
}
这可行,但我对此不满意,因为它并没有真正检查是否有人,而是检查该字符串是否存在。
有更好的方法吗?
也许创建一个可以包含 Persons
的 PersonListEntity
并执行如下操作:
PersonListEntity output = response.getEntity(PersonListEntity.class);
是否有可能拥有一个可以包含多个甚至不包含 Person
的 PersonListEntity
?
不幸的是,更改 RESTful 资源的行为对我来说是不可能的。
最佳答案
您可以使用Jersey's XML support,而不是查看响应中的原始字符串。自动解析它并将其转换为 POJO。您的 POJO 将包含人员列表,您只需检查大小即可。
关于java - 检查 REST 响应是否包含空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30482401/