Sikander Nawaz
Sikander Nawaz

Reputation: 131

PHP: How to send cURL request using GET?

I am using cURL for an API call, below is my code:

$data = array(
            'r'                          =>  'create',
            '_object'                    =>  'Question',
            '_api_key'                   =>  '........',
            '_user_id'                   =>  $creator_id,
            '_subtype_id'                =>  $type_id,
            '_subtopic_id'               =>  $subtopic_id,
            '_title'                     =>  $title,
            '_description'               =>  $description,             
            '_encoded_xml'               =>  $main_xml
        );
     
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL,"http://urlhere/v1/resources/objects");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS,$data);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    
        $server_output = curl_exec($ch);    
        curl_close ($ch);
        print_r($server_output);

I want these parameters to be sent as GET request instead of POST, how can I do that pls advise

Upvotes: 0

Views: 124

Answers (1)

SH_
SH_

Reputation: 266

CURLOPT_POSTFIELDS is for the body (payload) of a POST request. For GET requests, the payload is part of the URL.

You just need to construct the URL with the arguments you need to send (if any), and remove the other options to cURL.


$data = array(
            'r'             =>  'create',
            '_object'       =>  'Question',
            '_api_key'      =>  '........',
            '_user_id'      =>  $creator_id,
            '_subtype_id'   =>  $type_id,
            '_subtopic_id'  =>  $subtopic_id,
            '_title'        =>  $title,
            '_description'  =>  $description,             
            '_encoded_xml'  =>  $main_xml
        );


        $send_data = http_build_query($data);
     
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL,"http://urlhere/v1/resources/objects?" . $send_data);
        // curl_setopt($ch, CURLOPT_POST, 1);
        // curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    
        
        $server_output = curl_exec($ch);    
        curl_close ($ch);
        print_r($server_output);

Upvotes: 2

Related Questions