Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
I'm having trouble with an API call. It claims I send a string, but it seems to me to be an array.
This is the full error:
Error in call to API function "https://content.dropboxapi.com/2/files/search_v2": options: expected array, got string
This is what was sent to cURL:
method:"POST"
header:"Authorization: Bearer MYTOKEN
Content-Type: application/json
Content-Length: 86"
content:"{"query":"test","options":{"path":"","max_results":100,"file_categories":"folder"}}"
ignore_errors:true
Anyone know what's wrong?
Found the problem... the option file_categories needs to be an array as well.
Hi @James_T,
Have you took a look on where parameters have to be put on? 🤔 Into header part of the HTTP query or into data part? 🧐 What are you doing actually? 🙂
Hope this tip gives right direction.
Hi,
I'm trying to do a search. I use a PHP library to handle the cURL calls. It works fine for creating a folder for instance.
Since the error is specifically about "options" parameter, I assume the call is done correctly, if it wasn't I assume I would get an error about something else, or even a missing "query" parameter?
@James_T wrote:
.., I assume the call is done correctly, if it wasn't I assume I would get an error about something else, or even a missing "query" parameter?
Better, don't assume anything! 👆 I can't be certain, what actually you have done. Seems you have posted in OP your HTTP query. 🧐 Is this correct? If so, there are multiple errors! I'm guessing most of them are copy/paste errors when you prepared the post.
To be sure, what we're talking about, post exact structure of your HTTP request/response and/or the code you are using (not something like, as is posted now). Better catch your HTTP request/response, so we would be sure exactly what's going on and what's the error. 😉
Below is my complete code. And here is the result:
Error in call to API function "files/search_v2": options: expected array, got string
$token = "....";
$options = array("path" => "/", "max_results" => 10);
$options["file_categories"] = "folder";
$parameters = array("query" => "searchPhrase", "options" => $options);
$headers = array(
"Authorization: Bearer $token",
'Content-Type: application/json'
);
$curlOptions = array(
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($parameters),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_VERBOSE => true,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
);
try {
$ch = curl_init('https://api.dropboxapi.com/2/files/search_v2');
curl_setopt_array($ch, $curlOptions);
$response = curl_exec($ch);
//var_dump($response);
curl_close($ch);
} catch (Exception $e) {
trigger_error(
sprintf(
'Curl failed with error #%d: %s',
$e->getCode(),
$e->getMessage()
),
E_USER_ERROR
);
}
Some more debugging:
echo json_encode($parameters, JSON_PRETTY_PRINT);
{
"query": "cat",
"options": {
"path": "\/folder",
"max_results": 10,
"file_categories": "folder"
}
}
Error in call to API function "files/search_v2": options: expected array, got string
That sure looks like an array to me, so I don't understand why it says it's a string...
Found the problem... the option file_categories needs to be an array as well.
Hi there!
If you need more help you can view your support options (expected response time for a ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!