在尝试开发与某些云服务交互的应用程序时,我发现Dropbox API for Java特别令人困惑。
具体如何查找HTTP错误。例如,如果请求失败,使用Google Drive API会抛出IOException,但是您可以将该IOException解析为GoogleJsonResponseException,然后您可以提取状态代码。
try {
File f =drive.files().create(fileMetadata).setFields("id").execute();
return f.getId();
} catch (IOException e) {
if (e instanceof GoogleJsonResponseException){
int statusCode = ((GoogleJsonResponseException) e).getStatusCode();
errorHandler(statusCode);
} else {
e.printStackTrace();
}
}
java dropbox API(特别是3.0.5)中有这样的东西。 我一直在环顾四周,看起来似乎没有,但我想确保在我走下像提到here这样非常专业和复杂编码的兔子洞之前。如果有人可以请给我一个例子,说明我如何正确处理这些例外。
答案 0 :(得分:1)
[交叉链接供参考:https://www.dropboxforum.com/t5/API-support/How-to-get-error-responses-java-api/m-p/258338#M14989]
Dropbox Java SDK会自动将HTTPS响应中的结构化错误数据解析为本机类,您可以根据需要使用该特性的多少。结构化错误响应(通常是响应主体中的JSON)提供的粒度远远超过状态代码。
例如,以下是您链接到my post的StackOverflow文档中缺少的代码示例:
try {
SharedLinkMetadata sharedLinkMetadata = client.sharing().createSharedLinkWithSettings("/test.txt");
System.out.println(sharedLinkMetadata.getUrl());
} catch (CreateSharedLinkWithSettingsErrorException ex) {
System.out.println(ex);
} catch (DbxException ex) {
System.out.println(ex);
}
和here's an example显示了如何检查特定错误情况(即该示例中的“路径”错误)。
这是处理这些异常的推荐方法。我不相信SDK提供了一种检索原始未解析错误响应的方法。 (如果您不想使用SDK,可以直接致电the HTTPS endpoints。)