2

尝试使用新 API 下载文件。但我收到一个错误(未找到)

使用旧 API,我下载得很好:

wcGetFile.DownloadStringAsync(new Uri("https://www.box.net/api/1.0/download/" + auth_token + "/2111821875"));

使用新 API,这是我的代码:

wcGetFile.Headers[HttpRequestHeader.Authorization] = "BoxAuth api_key=" + api_key + "&auth_token=" + auth_token;
        wcGetFile.DownloadStringAsync(new Uri("https://api.box.com/2.0/files/2111821875/data"));

该文件确实存在,因为如果我从通话结束时删除“数据”,我将获得没有错误的文件信息。

wcGetFile.Headers[HttpRequestHeader.Authorization] = "BoxAuth api_key=" + api_key + "&auth_token=" + auth_token;
        wcGetFile.DownloadStringAsync(new Uri("https://api.box.com/2.0/files/2111821875"));

根据文档,信息和实际文件之间的唯一区别是 url 的“数据”部分。但这似乎对我不起作用。

4

2 回答 2

1

看起来我们遇到了一个阻止下载的小错误。如果您使用“https://www.box.com/”而不是“https://api.box.com/”,则下载应该可以工作。不过,我们现在正在努力修复这个错误!

于 2012-05-01T23:06:22.647 回答
1

我不确定您是否仍然对答案感兴趣,但这段代码对我来说效果很好:

public static Task DownloadFile(string fileId, string location, string authToken) {
    var auth = string.Format("Authorization: BoxAuth api_key={0}&auth_token={1}", ApiKey, authToken);
    var uri = new Uri(string.Format("https://api.box.com/2.0/files/{0}/data", fileId));

    var client = new WebClient();
    client.Headers.Add(auth);
    return client.DownloadFileTaskAsync(uri, location);
}
于 2012-06-18T04:23:32.190 回答