您認爲如何從IO異常中檢測到404?我只能搜索「404」的錯誤消息,但這是正確的方式?什麼更直接?如何檢測來自IO異常的404響應代碼?
import com.google.api.services.drive.model.File;
import com.google.api.services.drive.Drive.Files.Update;
import com.google.api.services.drive.Drive;
File result = null;
try {
update = drive.files().update(driveId, file , mediaContent);
update.setNewRevision(true);
result = update.execute();
} catch (IOException e) {
Log.e(TAG, "file update exception, statusCode: " + update.getLastStatusCode());
Log.e(TAG, "file update exception, e: " + e.getMessage());
}
Log.e(TAG, "file update exception, statuscode " + update.getLastStatusCode());
03-03 05:04:31.738: E/System.out(31733): file update exception, statusCode: -1
03-03 05:04:31.738: E/System.out(31733): file update exception, e: 404 Not Found
03-03 05:04:31.738: E/System.out(31733): "message": "File not found: FileIdRemoved",
答:下面Aegan的評論是正確的,原來你也可以繼承的異常的GoogleJsonResponseException並從那裏得到的狀態代碼。在這種情況下,答案最終取決於我使用GoogleClient的事實,該客戶端生成包含狀態碼的IO異常的子類。
例子:
Try{
...
}catch (IOException e) {
if(e instanceof GoogleJsonResponseException){
int statusCode = ((GoogleJsonResponseException) e).getStatusCode();
//do something
}
}
也許你正在404的子類獲得IOException異常? – Devrim
正確!我得到一個GoogleJsonResponseExpection,它在被轉換時包含一個getStatusCode()方法。如果您想寫出來,我會將其標記爲正確。 – NameSpace