1

Per Box 示例使用以下代码获取用户根文件夹的简单方法

http://opensource.box.com/box-java-sdk/

BoxAPIConnection api = new BoxAPIConnection("your-developer-token");
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
for (BoxItem.Info itemInfo : rootFolder) {
System.out.format("[%d] %s\n", itemInfo.getID(), itemInfo.getName());
}

但是,如果我需要使用 As-user 访问其他人的信息,我将无法使用 BOX SDK 类(BoxFolder、BoxFile、BoxUser ...),并且只需要直接从 JSON 获取数据,如下所示。如果这样做,我将失去新 SDK 中添加的最新功能。这是最好的方法吗?表现如何?有没有其他可用的方法?

url=  new URL("https://api.box.com/2.0/folders/0");
BoxAPIRequest request = new BoxAPIRequest(api,url,"GET"); 
request.addHeader("As-User", "12345678");
BoxJSONResponse response = (BoxJSONResponse) request.send();
JsonObject responseJSON =    JsonObject.readFrom(response.getJSON());

稍后使用 JsonObject / JsonArray 获取文件夹属性。如果我需要文件夹项目,我需要像下面那样循环 JsonArray

JsonArray entries = responseJSON.get("entries").asArray();

for (JsonValue entry : entries) 
               { ....}
4

1 回答 1

3

不幸的是,新的 Java SDK 测试版还没有对“As-User”功能的内置支持,这使得这种情况变得棘手。一种解决方法是使用 a手动RequestInterceptorBoxAPIConnection“As-User”标头添加到每个请求。

api.setRequestInterceptor(new RequestInterceptor() {
    @Override
    public BoxAPIResponse onRequest(BoxAPIRequest request) {
        request.addHeader("As-User", "user-id");

        // Returning null means the request will be sent along with our new header.
        return null;
    }
}

这应该让您可以正常使用 SDK 的其余部分,而不必担心手动执行 API 请求。我还创建了一个添加“作为用户”支持的问题。

于 2015-02-12T21:29:24.417 回答