Announcements
Do you have an idea for Dropbox Paper? Share it with us!

get_temporary_link and could not decode input as JSON

New member | Level 2

Hello.

I'm trying to get a temporary link for file with using get_temporary_link from file_properties with below listed PHP code:

$getlink_url = 'https://api.dropboxapi.com/2/files/get_temporary_link'; 

$getlink_headers = array    (   'Authorization: Bearer '. $token,
                                            'Content-Type: application/json',
                                            'data: '.
                                            json_encode(
                                                array (
                                                "path"=>"/file_storage/some_file.zip"
                                                )
                                            )

                                        );
            $ch1 = curl_init($getlink_url);
            curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch1, CURLOPT_HTTPHEADER, $getlink_headers);
            
               
            
            $response2 = curl_exec($ch1);
            curl_close($ch1);
            error_log($response2);

But i receive an error:

[php7:notice] [pid 25434] [client ::1:40512] Error in call to API function "files/get_temporary_link": request body: could not decode input as JSON, referer: http://localhost/DropTest.html

Could you please let me know what i'm doing wrong. I found solutions for other languages but not for PHP. 


Thank you in advance for support.

 

Michal

1 Accepted solution

Accepted Solutions

Re: get_temporary_link and could not decode input as JSON

Dropboxer

The /2/files/get_temporary_link endpoint is an RPC-style endpoint, so it expects the API call parameters as JSON in the request body. 

In the code you shared, you're actually sending the parameters in a header named 'data'. 

You'll need to fix your code to send them in the request body, like:

$parameters = json_encode(
                    array (
                    "path"=>"/file_storage/some_file.zip"
                    )
                );
curl_setopt($ch1, CURLOPT_POSTFIELDS, $parameters);
Reply
Loading...
2 Replies

Re: get_temporary_link and could not decode input as JSON

Dropboxer

The /2/files/get_temporary_link endpoint is an RPC-style endpoint, so it expects the API call parameters as JSON in the request body. 

In the code you shared, you're actually sending the parameters in a header named 'data'. 

You'll need to fix your code to send them in the request body, like:

$parameters = json_encode(
                    array (
                    "path"=>"/file_storage/some_file.zip"
                    )
                );
curl_setopt($ch1, CURLOPT_POSTFIELDS, $parameters);
Reply
Loading...

Re: get_temporary_link and could not decode input as JSON

New member | Level 2

Greg

Thank you very much for support. Now works fine:

 

$getlink_url = 'https://api.dropboxapi.com/2/files/get_temporary_link'; 

$getlink_headers = array    (   'Authorization: Bearer '. $token,
                                            'Content-Type: application/json'
                                        );
$ch1 = curl_init($getlink_url);


$parameters = json_encode(
                array (
                "path"=>"/file_storage/some_file.zip"
                )
            );
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch1, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($ch1, CURLOPT_HTTPHEADER, $getlink_headers);
            
               
            
$response2 = curl_exec($ch1);
curl_close($ch1);
error_log($response2);

 

Best, Michal

Reply
Loading...
API Support

Have a question? Our Dropbox Community is here to help you find an answer!
You won’t have to wait too long for a reply, but why not learn more about the Community while you’re here.

Not the right discussion for you? Find out what else our Community has to say about API Support.

Or, search our Help Center for even more.

Who's talking
Top contributors to this post