我有一个PHP RESTful API,它返回JSON对象。 我有一个Android客户端请求来自该API的REST请求
直到现在如果服务器端出现问题,那么API返回一个布尔响应“false”
我想更改API的流程,因此不会发送包含“false”的JSON响应,而是抛出和Exception,我希望android端捕获异常。
所以基本上,我想要类似下面的Android代码:
try {
php_api.getUsers();
} catch (Exception ex) {
// TODO
}
可以吗? 是否会以这种方式捕获任何PHP异常?
答案 0 :(得分:1)
我没有使用过Java,但我认为你不能这样做。 当PHP抛出异常时,它仍会产生某种类型的输出,具体取决于您设置异常处理的方式。 它可以显示带有堆栈跟踪或类似内容的异常消息。 但是在客户端(您的Java应用程序)方面,这只不过是文本。
但是,休息响应应始终包含您可以检查的标头。看看这个:http://blog.zenika.com/index.php?post/2011/05/18/Error-handling-with-REST
通过遵循那里所写的内容,您的Java-to-PHP api将始终在返回内容之前读取响应头。如果500或400出现,你将从api中抛出一个java异常,你可以在使用它的代码中捕获它。
如果你的PHP端没有发送你想要的标题,你总是可以覆盖PHP的error / exception处理来生成自定义输出(包括标题)。