cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to learn some quick and useful tips to make your day easier? Check out how Calvin uses Replay to get feedback from other teams at Dropbox here.

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: 

get_temporary_link and could not decode input as JSON

get_temporary_link and could not decode input as JSON

jurgenatore
Explorer | Level 3
Go to solution

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

Greg-DB
Dropbox Staff
Go to solution

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

Greg-DB
Dropbox Staff
Go to solution

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

jurgenatore
Explorer | Level 3
Go to solution

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

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    jurgenatore Explorer | Level 3
  • User avatar
    Greg-DB Dropbox Staff
What do Dropbox user levels mean?