2012-05-01 1 views
0

Я тестирую API SkyDrive, используя следующий код:SkyDrive загрузки файлов API с помощью REST

Dim webRequest As HttpWebRequest = DirectCast(HttpWebRequest.Create("https://apis.live.net/v5.0/me/skydrive/files?access_token=" & Me.ACCESS_TOKEN), HttpWebRequest) 
    webRequest.Method = "POST" 
    webRequest.ContentType = "multipart/form-data; boundary=A300x" 
    webRequest.KeepAlive = True 
    webRequest.Timeout = 80000 
    Using streamWriter As New System.IO.StreamWriter(webRequest.GetRequestStream()) 
     streamWriter.Write("--A300x\r\n") 
     streamWriter.Write("Content-Disposition: form-data; name=""file""; filename=""HelloWorld.txt""\r\n") 
     streamWriter.Write("Content-Type: application/octet-stream\r\n") 
     streamWriter.Write("\r\n") 
     streamWriter.Write("vooo") 
     streamWriter.Write("\r\n") 
     streamWriter.Write("--A300x--\r\n") 
     streamWriter.Close() 
    End Using 
    ' response 
    Using webResponse As HttpWebResponse = DirectCast(webRequest, HttpWebRequest).GetResponse() 
     If webResponse.StatusCode() = HttpStatusCode.OK Then 
     Using streamReader As New System.IO.StreamReader(webResponse.GetResponseStream()) 
      Throw New Exception(streamReader.ReadToEnd()) 
      streamReader.Close() 
     End Using 
     End If 
     webResponse.Close() 
    End Using 

Получение плохой запрос (400). Токен доступа и URL подтверждены & действительны. любой ключ?

ответ

0

Если вы посмотрите на тело ответа (или используйте Fiddler, чтобы сделать то же самое), вы найдете сообщение об ошибке в формате JSON, которое точно объяснит, в чем проблема. Моя первая догадка заключается в том, что папка skydrive не существует для этого целевого пользователя.

2

Я использовал следующий метод для загрузки файлов в Skydrive. Работает нормально, как и для меня.

public void uploadFile(string ParentFolderID, string FileName) 
    { 
     string uri = String.Format(SkyDriveHelper.BaseURI + ParentFolderID + "/files"+"?access_token=" + account.accessInfo.access_token); 
     try 
     { 
      WebClient client = new WebClient(); 
      client.Headers.Add("Content-Type", "multipart/form-data; boundary=A300x"); 
      Stream requestStream = client.OpenWrite(uri); 

      //writing start boundary 
      requestStream.Write("--A300x\r\n".ToByteArray(), 0, "--A300x\r\n".Count()); 

      //writing body headers 
      string header1 = String.Format("Content-Disposition: form-data; name=\"file\"; filename=\"{0}\"\r\n", FileName); 
      requestStream.Write(header1.ToByteArray(), 0, header1.Count()); 
      string header2 = "Content-Type: application/octet-stream\r\n"; 
      requestStream.Write(header2.ToByteArray(), 0, header2.Count()); 
      requestStream.Write("\r\n".ToByteArray(), 0, "\r\n".Count()); 

      //writing body - WRITE BYTES HERE 
      requestStream.Write("HelloWorld".ToByteArray(), 0, "HelloWorld".Count()); 

      //writing finish boundary 
      requestStream.Write("\r\n\r\n".ToByteArray(), 0, "\r\n\r\n".Count()); 
      requestStream.Write("--A300x\r\n".ToByteArray(), 0, "--A300x\r\n".Count()); 
      requestStream.Close(); 

     } 
     catch (Exception e) 
     { 
      MessageBox.Show("Download Error:" + e.Message); 
     } 

    } 
+0

Почему все в порядке, что не так? – jcw

+0

ничего страшного, это обычная загрузка файла в skydrive. Напишите свои байты файла после комментария // написания тела. – Vlad

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

  • Нет связанных вопросов^_^