2012-03-15 2 views
2

Я прочитал о создании папки в SkyDrive с Live SDK here (не говоря уже о параметре там «границе»), вот мой код:Создание папок проблема с SkyDrive

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; 

И не уверен, что whay Я получаю 400 вернулся:

{ "ошибка": { "код": "request_header_invalid", "сообщение": «The предусмотрено заголовок 'Content-Type' отсутствует обязательный параметр 'граничное'. " }}

Что я делаю неправильно? Я что-то пропустил?

Спасибо за ваше время!

+1

Привет всем, как глупо я! Мой путь worng, он должен быть «https://apis.live.net/v5.0/folder.77e1a950546be643.77E1A950546BE643!202» (без «/ files /») – nvcnvn

ответ

5

Попробуйте использовать 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 request, составной запрос. В Windows Live REST API documentation также говорится об этом, но не в контексте создания папок, что предполагает, что запрос разбиения выполняется где-то во встроенном LiveConnectClient.

Смежные вопросы