0

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

SH_
  • 266
  • 2
  • 3
  • 17

1 Answers1

2

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

SH_
  • 266
  • 2
  • 3
  • 17
  • i am sending $data array to the server as get request so should i add ?iitem= itemval , like this in url ? – Sikander Nawaz Dec 22 '20 at 15:57
  • Ah yes... add something like this... `$send_data = http_build_query($data);` adding it to your URL, I've updated the code in the answer. – SH_ Dec 22 '20 at 16:05