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.

6
  • 1
    Simply read the manual for cURL and you will manage to do this on your own ;-) Info 1 ----- Info 2 Commented Mar 8, 2017 at 12:42
  • Just put the things that you need and variables and build the string as you want it, it's not a big deal ... Commented Mar 8, 2017 at 12:42
  • Php curl function not return curl command url ? @AlexOdenthal Commented Mar 8, 2017 at 12:52
  • 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. Commented Mar 8, 2017 at 13:42
  • 16
    this question is completely fine and related to programming, I am also looking for solution to extract PHP curl call to command line command. Commented Jul 12, 2018 at 11:12

4 Answers 4

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

Sign up to request clarification or add additional context in comments.

4 Comments

Thank you for answer but I want to generate dynamically using php code and store into log file.
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.
This doesn't really answer the question. Hence not being accepted as "the solution"
cURL-to-PHP does exactly the opposite what OP is requesting
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.

3 Comments

Doesn't really work when you are sending it to an external service from what I can tell.
@Patrick you can send your request to built-in web server anytime instead of external service as a workaround.
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.
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.

Comments

0

you can do this workaround

  1. get a simple webhook.site url (https://webhook.site/)
  2. Now replace the url of your curl call with the one recieved from webhook.site
  3. NOw run your code . you can optionally add an exit after the code this ensure that the code doesn't process further.
  4. Now your curl call would have been registered into the webhook.site .
  5. there is an option to copy as curl
  6. the only change in this curl call is the replace the url back to original.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.