无法使用Box API V2创建共享链接

时间:2014-04-12 22:58:22

标签: c# .net cloud box-api

更新:我想出来并在下面发布了答案。

我尝试做的就是更新任何文件属性。描述,名称,任何东西,但无论我如何格式化,我都得到403.

我需要能够修改文件,以便可以通过Box API从云应用程序共享它。我从V1更新了其他人的代码,但是他们已经不再可用了...我已经尝试了很多东西,但大多只是获得403 Forbidden错误。

OAuth2没有问题,工作正常,我可以列出文件和文件夹,但不能修改它们。这个问题是关于分享的,但我也无法改变描述。该帐户是我的,我使用我的管理员凭据进行身份验证。任何建议将不胜感激。

这是我正在使用的方法。我传入了fileId和令牌,为了简洁,我省略了try / catch等。

        string uri = string.Format("https://api.box.com/2.0/files/{0}", fileId);
        string body = "{\"shared_link\": {\"access\": \"open\"}}";

        byte[] postArray = Encoding.ASCII.GetBytes(body);

        using (var client = new WebClient())
        {
            client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            client.Headers.Add("Authorization: Bearer " + token);

            var response = client.UploadData(uri, postArray);

            var responseString = Encoding.Default.GetString(response);
        }

感谢。

2 个答案:

答案 0 :(得分:1)

好的,我的荷马辛普森时刻......

UploadData是一个POST,我需要做一个PUT。这是解决方案。

        string uri = String.Format(UriFiles, fileId);
        string response = string.Empty;
        string body = "{\"shared_link\": {\"access\": \"open\"}}";
        byte[] postArray = Encoding.ASCII.GetBytes(body);

        try
        {
            using (var client = new WebClient())
            {
                client.Headers.Add("Authorization: Bearer " + token);
                client.Headers.Add("Content-Type", "application/json");
                response = client.UploadString(uri, "PUT", body);
            }
        }
        catch (Exception ex)
        {
            return null;
        }
        return response;

答案 1 :(得分:0)

尝试将您的内容类型更改为' multipart / form-data'?

我只是在https://developers.box.com/docs/#files-upload-a-file

查看了api

看起来服务器期待多部分帖子

这是发布多部分数据的堆栈溢出帖子:

ASP.NET WebApi: how to perform a multipart post with file upload using WebApi HttpClient