How to Convert Curl to PHP - php

I am having a problem with my php script.
When i run this command in terminal :-
curl -X POST -H "X-Futuresimple-Token:mytoken" \
-H "Accept:application/xml" \
-H "Content-Type:application/json" \
--data "{\"lead\" : { \"company_name\" : \"Cody Test\", \
\"first_name\" : \"Cody\", \"last_name\" : \"Guest\", \"email\" : \"Cody.guest#boxview.com\" }}" \
https://leads.futuresimple.com/api/v1/leads.json
It works. But i want to convert it into PHP so that i can get the response using PHP
Thanks

Slap on the "--libcurl example.c" option to get your program in plain C, from there it is usually easy to make it into PHP...

Related

convert request from cURL to postman

I am trying to convert the following post request using postman with no luck
> curl "https://192.168.50.52/token" \
> --request POST \
> --include \
> --insecure \
> --header "Content-Type: application/json" \
> --data '["todo.all"]' \
> --user test:test
Set the "secure" => false setting in slim-api if you do not want to use https

Bluemix SSML with PHP

I'm using PHP shell_exec to call the Bluemix Text to Speech API and my code is working well except when I call the text with SSML tags like my second code.
How could I use text and SSML in the same data query?
$result = shell_exec("/usr/bin/curl -k -u 'XXX':'XXX' -X POST \
--header 'Content-Type: application/json' \
--header 'Accept: audio/wav' \
--max-time 90000 \
--output 'public/uploads/audios/padrao_bomdia.wav' \
--data '{\"text\":\"Hello! This is an test.\", \"voice\":\"pt-BR_IsabelaVoice\"}' \
'https://stream.watsonplatform.net/text-to-speech/api/v1/synthesize?voice=pt-BR_IsabelaVoice'");
$result = shell_exec("/usr/bin/curl -k -u 'XXX':'XXX' -X POST \
--header 'Content-Type: application/json' \
--header 'Accept: audio/wav' \
--max-time 90000 \
--output 'public/uploads/audios/padrao_bomdia.wav' \
--data '{\"text\":\"Hello! <say-as interpret-as="letters">Hello</say-as> This is an test.\", \"voice\":\"pt-BR_IsabelaVoice\"}' \
'https://stream.watsonplatform.net/text-to-speech/api/v1/synthesize?voice=pt-BR_IsabelaVoice'");
Does say-as interpret-as="letters" Hello fragment need the escape slashes around 'letters'?
Unfortunately, Only US-English Allison voice supports Expressive SSML. Isabela, the PT-BR voice, does not support SSML. That's why it's not working.
Reference:
Currently, the service supports expressiveness only for the US English
Allison voice (en-US_AllisonVoice). Using the element with any other
voice returns an error.

How to create the get method for the call

I am studying and implementing an api and while following the examples,
Here is the example 1 :
curl -X POST \
-H "Content-Type: application/json" \
-H "QuickBlox-REST-API-Version: 0.1.0" \
-d '{"application_id": "2", "auth_key": "DtF9cZPqTF8Wy9Q", "timestamp": "1333630580", "nonce": "1340569516", "signature": "13293a5bd2026b957ebbb36c89d9649aae9e5503", "user": {"login": "injoit", "password": "injoit"}}' \
https://api.quickblox.com/session.json
For the above example i consructed my get method as
https://api.quickblox.com/session.json?token=re8d22c6e617133ffeadd761193a6c57d87bfb1a0f&application_id=23995&auth_key=CbRasu4Wftu25Qw&nonce=8796&timestamp=1434446627&signature=667ee2b448a5d3dd57d112afef3f84dd6c67e165
and it is working good.
But for the below example
curl -X POST \
-H "QuickBlox-REST-API-Version: 0.1.0" \
-H "QB-Token: 17f6a337b0656c9c7e983f9705d79562fc694c0e" \
-H "Content-Type: application/json" \
-d '{"push_token": {"environment": "production", "client_identification_sequence": "aa557232bc237245ba67686484efab"},
"device": {" platform": "iOS", "udid": "5f5930e927660e6e7d8ff0548b3c404a4d16c04f"}}' \
http://api.quickblox.com/push_tokens.json
How can i create the get method. As this has two main arrays i am little confused.
Can anyone help in creating how can i use this call ?
It should be something like this:
https://api.quickblox.com/push_tokens.json?push_token[environment]=production&push_token[client_identification_sequence]=aa557232bc237245ba67686484efab&device[platform]=iOS&device[udid]=5f5930e927660e6e7d8ff0548b3c404a4d16c04f

In PHP is it possible to get the last curl attempt's syntax as a string?

Occasionally I would like to debug a curl request by running the actual curl command in a Linux Terminal Is it possible to get the command generated by PHP in a String format to get the curl command, something like this?
curl -X PUT \
-H "x-pushbots-appid: 54cc0a511d0ab13c0528b459d" \
-H "x-pushbots-secret: 1444fe8be3324ff7128f25aa18cdee12" \
-H "Content-Type: application/json" \
-d '{ "token" : String , "platform" : String , "lat" : String , "lng" : String , "active" : Array , "tag" : Array , "alias" : String }' \
https://api.pushbots.com/deviceToken
You need to avoid CLI execution as it is extremely hard to debug it. I recommend you make use of PHP's cURL extension (http://php.net/manual/en/ref.curl.php) and then you can debug using:
Try-Catch (Exception handling)
error_get_last()
function() OR die("---log / break code --");

Is it secure to use exec() PHP

I wondering if is good (or bad), to use exec() command in PHP ...
For example, with API Paypal REST, I use exec() (with curl) rather than the curl from PHP
$a = exec('curl -v '.$this->ENDPOINT.'/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: fr_FR" \
-u "'.$this->CLIENTID.':'.$this->SECRET.'" \
-d "grant_type=client_credentials"'
);
$a = json_decode($a);
What is the impact? Is it better not to do?
Thanks guys
If those parameters are not coming from an end-user then you are pretty-safe. If not, then you should definitely filter them through escapeshellarg()
The secure code..
$a = exec('curl -v '.escapeshellarg($this->ENDPOINT).'/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: fr_FR" \
-u "'.escapeshellarg($this->CLIENTID).':'.escapeshellarg($this->SECRET).'" \
-d "grant_type=client_credentials"'
);
$a = json_decode($a);

Categories