更新:我想出来并在下面发布了答案。
我尝试做的就是更新任何文件属性。描述,名称,任何东西,但无论我如何格式化,我都得到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);
}
感谢。
答案 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