cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Update: Find information on Dropbox support during COVID-19 here
Close

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted

get_temporary_link and could not decode input as JSON

New member | Level 2
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
Highlighted

Re: get_temporary_link and could not decode input as JSON

Dropboxer
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);

View solution in original post

2 Replies 2
Highlighted

Re: get_temporary_link and could not decode input as JSON

Dropboxer
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);

View solution in original post

Highlighted

Re: get_temporary_link and could not decode input as JSON

New member | Level 2
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

Polls
Do you know how to organize your files and folders?
We have created a guide on folder best practice, so you can get organized now check it out here.

Work Smarter with Dropbox

The way we work is changing. Share and discover new ways to work smarter with Dropbox in our community.

Sound good? Let's get started.
Who's talking

Top contributors to this post

What do Dropbox user levels mean?
Need more support?