Проблема с созданием папок в SkyDrive
Я читал о создании папки в SkyDrive с Live SDK здесь ( здесь нет упоминания о параметре 'border'), вот мой код:
WebRequest request = WebRequest.Create("https://apis.live.net/v5.0/folder.77e1a950546be643.77E1A950546BE643!202/files/");
request.Method = "POST";
string postData = "{name: \"My example folder\"}";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.Headers.Add("Authorization", "Bearer " + access_token);
request.ContentType = "application/json";
request.ContentLength = byteArray.Length;
И не уверен, почему я вернул 400:
{"error": {"code": "request_header_invalid", "message": "В указанном заголовке 'Content-Type' отсутствует обязательный параметр 'border'." } }
Что я делаю не так? Я что-то пропустил?
Спасибо за ваше время!
1 ответ
Попробуйте использовать WindowsLiveClient, а не создавать собственный веб-запрос с нуля. Я попробовал пример кода в документации, и он отлично работал со мной. Это предполагает, что люди уже вошли в Windows Live, а сеанс хранится в "сеансе".
if (session == null)
{
infoTextBlock.Text = "You must sign in first.";
}
else
{
Dictionary<string, object> folderData = new Dictionary<string, object>();
folderData.Add("name", "A brand new folder");
LiveConnectClient client = new LiveConnectClient(session);
client.PostCompleted +=
new EventHandler<LiveOperationCompletedEventArgs>(CreateFolder_Completed);
client.PostAsync("me/skydrive", folderData);
}
И затем есть функция, которая должна быть запущена, когда операция завершается, для перехвата ошибок.
void CreateFolder_Completed(object sender, LiveOperationCompletedEventArgs e)
{
if (e.Error == null)
{
infoTextBlock.Text = "Folder created.";
}
else
{
infoTextBlock.Text = "Error calling API: " + e.Error.ToString();
}
}
Согласно w3, ошибка, которую вы получаете, возникает при выполнении запроса HTTP206, составного запроса. Об этом также говорится в документации REST API Windows Live, но не в контексте создания папок, что предполагает, что запрос разделения выполняется где-то во встроенном LiveConnectClient.