According to the description of the Google Custom Search API you can invoke it using the GET verb of the REST interface, like with the example:
GET https://www.googleapis.com/customsearch/v1?key=INSERT-YOUR-KEY&cx=017576662512468239146:omuauf_lfve&q=lectures
I setup my API key and custom search engine, and when pasted my test query directly on my browser it worked fine, and I got the JSON file displayed to me.
Then I tried to invoke the API from my PHP code by using:
$json = file_get_contents("$url") or die("failed");
Where $url was the same one that worked on the browser, but my PHP code was dying when trying to open it.
After that I tried with curl, and it worked. The code was this:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$body = curl_exec($ch);
Questions:
- How come file_get_contents() didn’t work and curl did?
- Could I use fsocket for this as well?
Question 1:
At first you should check ini setting
allow_url_fopen, AFAIK this is the only reason whyfile_get_contents()shouldn’t work. Also deprecatedsafe_modemay cause this.Oh, based on your comment, you have to add
http://to URL when using with file system functions, it’s a wrapper that tells php that you need to use http request, without it function thinks you require to open./google.com(the same asgoogle.txt).Question 2:
Yes, you can build almost any cURL request with sockets.
My personal opinion is that you should stick with cURL because: