2015-04-03 3 views
0
Dim url As String = String.Format("{0}folders/{1}", boxApiUrl, ParentFolderId) 'ParentFolderId being pass is "0" 
    Using request = New HttpRequestMessage() With {.RequestUri = New Uri(url), .Method = HttpMethod.Post} 
     request.Headers.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Authorization", "Bearer " + acctoken) 

     Dim data As Dictionary(Of [String], [String]) = New Dictionary(Of String, String)() 
     data.Add("name", FolderName) 

     Dim content As HttpContent = New FormUrlEncodedContent(data) 
     request.Content = content 
     Dim response = _httpClient.SendAsync(request).Result 
     If response.IsSuccessStatusCode Then 
       '   
     End If 
    End Using 

Мое подозрение, что данные не собираются правильно, но не могут понять, как еще передать имя папки, которое будет создано под корнем. Все остальные функции (чтение корневой папки, загрузка файла и т. Д.) С использованием токена отлично работают.Box.Net Create Folder Bad Request 400

ответ

1

Идентификатор родительской папки передается в теле POST, а не в URL. Органом должны быть данные JSON в форме: { "name": "FolderName", "parent": { "id": "ParentFolderId" }}. Documentation.

Dim url As String = String.Format("{0}folders", boxApiUrl) 
Using request = New HttpRequestMessage() With {.RequestUri = New Uri(url), .Method = HttpMethod.Post} 
    request.Headers.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Authorization", "Bearer " + acctoken) 

    Dim format as String = @"{{ ""name"":""{0}"", ""parent"": {{ ""id"":""{1}"" }} }}"; 
    Dim body as String = String.Format(format, FolderName, ParentFolderId); 
    request.Content = New StringContent(body, Encoding.UTF8, "application/json") 

    Dim response = _httpClient.SendAsync(request).Result 
    If response.IsSuccessStatusCode Then 
      '   
    End If 
End Using 

Как и в стороне, вы можете использовать метод JsonConvert.SerializeObject Json.NET для сериализации анонимного или статического типа в JSON строку:

Dim obj = New With {Key .name = FolderName, 
         .parent = New With {Key .id = ParentFolderId }}; 
Dim body as String = JsonConvert.SerializeObject(body); 
request.Content = New StringContent(body, Encoding.UTF8, "application/json")