How to convert Php CURL request to command line curl
Asked Answered
J

3

36

How to translate following php curl request to curl executable command.

 $curlOpts = array(
                    CURLOPT_PORT           => "3000",
                    CURLOPT_URL            => 'www.example.com',
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_HTTPHEADER     => array("Cookie: connect.sid=aASD234SDFfds", "content-type:application/json"),
                    CURLOPT_POST           => true,
                    CURLOPT_POSTFIELDS     => {"email": "test.com",  
   "password": "123456"},
                );

curl_setopt_array($ch, $curlOpts);
 $output = curl_exec($ch);

Respected Curl command which I want

curl -X GET --header 'Accept: application/json' 'http://www.example.com?sort=clicks&order=des'


curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "email": "test.com", \ 
   "password": "123456" \ 
 }' 'http://example.com/login'

Please help me for the same.

Jordon answered 8/3, 2017 at 12:34 Comment(5)
Simply read the manual for cURL and you will manage to do this on your own ;-) Info 1 ----- Info 2Purvis
Just put the things that you need and variables and build the string as you want it, it's not a big deal ...Udale
Php curl function not return curl command url ? @AlexOdenthalJordon
Your question has nothing to do with programming, and a little bit too broad, please try to be a little more specific next time. As for your problem, I posted a suggestion you can start with. Cheers.Herder
this question is completely fine and related to programming, I am also looking for solution to extract PHP curl call to command line command.Rice
H
3

Please note that this is a workaround only.

Try to assemble your http request in Postman which is a really rich tool for testing APIs. It is a Chrome plugin, and available from the Chrome webstore for free (link). Alternatively, you can install it as a standalone client too from their website.

It has a nice feature which let you to grab the curl command wrapped in different languages/formats of your preference. In your case, in BASH too.

Put the request together then:

  • click "Code" (Right under the "Save" button)
  • choose "cURL" from the dropdown list
  • click "copy to Clipboard"

...and that's it, you have your preformatted cURL command line.

Also, there's a tool called cURL-to-PHP written in JavaScript, which does the exact thing you'd like to do.

If you take some time, you can translate the converter logic to PHP with little effort (eg. you don't need to research every aspects of cURL internals).

Herder answered 8/3, 2017 at 13:38 Comment(4)
Thank you for answer but I want to generate dynamically using php code and store into log file.Jordon
I see. Unfortunately, there's no PHP tool for that, but you can take a look for cURL-to-PHP. It's basically doing exactly what you'd like to do, written in JavaScript. If you'd take the time, you can translate the converter code for PHP with little effort.Herder
This doesn't really answer the question. Hence not being accepted as "the solution"Kirsten
cURL-to-PHP does exactly the opposite what OP is requestingHertel
H
3

take a look at https://github.com/biganfa/php2curl. Start a webserver, send your request, and you will get the command line cURL version of the request using the library.

Heavenward answered 24/2, 2019 at 22:49 Comment(3)
Doesn't really work when you are sending it to an external service from what I can tell.Boylan
@Boylan you can send your request to built-in web server anytime instead of external service as a workaround.Heavenward
Caution The eval() language construct is very dangerous because it allows execution of arbitrary PHP code. Its use thus is discouraged. If you have carefully verified that there is no other option than to use this construct, pay special attention not to pass any user provided data into it without properly validating it beforehand.Gombach
I
1

Check the below link for PHP Constant values of CURL. E.X. While you check curlopt array by print_r($curlout). You get all constant values.

Array ( [78] => 30 [19913] => 1 [13] => 120 [32] => 0 [10018] => storeden-php-1.1b [10023] => Array ( [0] => key: f2e7fd282883935b7a52ae4757917e1ec6026076368641084feec997023001099 [1] => exchange: a5622d643d09785a679c381238a067cfb60edf0c2bdd290b6a1435d50e [2] => Expect: ) [10002] => ApiURL)

https://gist.github.com/bayleedev/4626922

check the above array keys where it defines the constant values CURLOPT_URL......................10002

Use the above constant identifier and add their respective identifier in Postman.

After that you can check the code with curl convert to transform PHP to curl commandline.

Hope that help you.

Interruption answered 14/7, 2023 at 10:9 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.