尝试调用Dropbox API v2。
Dim client = New RestClient("https://api.dropboxapi.com/2/")
Dim request = New RestRequest("files/search", Method.POST)
request.AddHeader("Authorization", "Bearer " & MYTOKEN)
request.AddHeader("Content-Type", "application/json")
'request.RequestFormat = DataFormat.Json
'request.JsonSerializer.ContentType = "application/json; charset=utf-8;"
'request.AddParameter("Content-Type", "application/json")
request.AddParameter("path", "")
request.AddParameter("query", "my file")
request.AddParameter("start", "0")
request.AddParameter("max_results", "1")
request.AddParameter("mode", "filename")
Dim res = client.Execute(request)
始终返回
Error in call to API function "files/search": Bad HTTP "Content-Type" header: "application/x-www-form-urlencoded". Expecting one of "application/json", "application/json; charset=utf-8", "text/plain; charset=dropbox-cors-hack"
尝试了注释的代码行但仍然是相同的响应。任何线索?
答案 0 :(得分:1)
如果我的猜测是正确的,这是使用RestSharp的Visual Basic代码,那么我认为你需要这样的东西(道歉,如果它不太正确;我不懂VB语法):
Dim client = New RestClient("https://api.dropboxapi.com/2/")
Dim request = New RestRequest("files/search", Method.POST)
request.AddHeader("Authorization", "Bearer " & MYTOKEN)
request.RequestFormat = DataFormat.Json
request.AddBody(New With {
.path = "",
.query = "my file",
.start = 0,
.max_results = 1,
.mode = "filename"
})
Dim res = client.Execute(request)
答案 1 :(得分:0)
像这样解决了。可能有更好的方法可以做到这一点,但现在可以使用。
Dim client = New RestClient("https://api.dropboxapi.com/2/")
Dim request = New RestRequest("files/search", Method.POST)
request.AddHeader("Authorization", "Bearer " & MYTOKEN)
request.AddHeader("Content-Type", "application/json") '---> this line still doesn't seem to do anything
Dim json As New JObject(New JProperty("path", ""), New JProperty("query", "my file"), New JProperty("max_results", 1), New JProperty("mode", "filename"))
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim res = client.Execute(request)
Dropbox API似乎非常敏感,例如,AddParameter中的对象不能是json字符串,它必须是json对象。并且“1”表示在max_results中不起作用,它必须是1而不带引号。很多反复试验但终于奏效了。