0

I know there is an library made by an individual (https://github.com/tgallice/wit-php). However, I can't find how he formatted the curl. I only want to do one request, so using his library would be overkill.

Here is the string that works in terminal, but I'm not sure how to write in PHP: curl -H 'Authorization: Bearer ACCESSCODE' 'https://api.wit.ai/message?v=20160526&q=mycarisbroken'

$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL,"https://api.wit.ai/message?v=20160526&q=my%20car%20doesnt%20work");
curl_setopt($ch1, CURLOPT_POST, 1);
// curl_setopt($ch1, CURLOPT_POSTFIELDS,$vars);  //Post Fields
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);

$headers = [
    'Authorization: Bearer ACCESSCODEOMITTED',
];

curl_setopt($ch1, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch1, CURLOPT_HEADER, true);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, false);
$server_output = curl_exec ($ch1);
curl_close($ch1);
Data::$answer = json_decode($server_output)['entities']['intent'][0]['value'];
hassan
  • 7,812
  • 2
  • 25
  • 36

2 Answers2

0

The command line you gave will send a GET to the remote server - but in your code you send a POST. Comment out curl_setopt($ch1, CURLOPT_POST, 1); and your PHP code will do exactly what the command line does.

symcbean
  • 47,736
  • 6
  • 59
  • 94
0

You can try using this PHP library https://github.com/php-curl-class/php-curl-class. Basically it wraps all of php curl functions to class. You can easily create mocks of your implementation afterwards and write decent unit tests.

Your code should look something like that:

<?php 
$curl = new Curl();
$curl->setHeader('Authorization', 'Bearer ACCESSCODEOMITTED');
$curl->get('htps://api.wit.ai/message?v=20160526&q=mycarisbroken');

if ($curl->error) {
  echo 'Error: ' . $curl->errorCode . ': ' . $curl->errorMessage . "\n";
} else {
  echo 'Response:' . "\n";
  var_dump($curl->response);
}
gsone
  • 1,188
  • 8
  • 25