New Bing API PHP example doesnt work New Bing API PHP example doesnt work php php

New Bing API PHP example doesnt work


after days of argument with microsoft techinchal support they accpeted that it didnt work

here is the proper coding which uses CURL do this in the BING API, apply CURL method instead of the file_get_contents which can’t pass the correct authentication information from Linux client to BING service.

<html>    <head>        <title>PHP Bing</title>    </head>    <body>        <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">            Type in a search:            <input type="text" id="searchText" name="searchText"                value="<?php                        if (isset($_POST['searchText']))                                   {                            echo($_POST['searchText']);                        }                        else                        {                            echo('sushi');                        }                       ?>"            />            <input type="submit" value="Search!" name="submit" id="searchButton" />            <?php                if (isset($_POST['submit']))                {            $credentials = "username:xxx";                $url= "https://api.datamarket.azure.com/Bing/SearchWeb/Web?Query=%27{keyword}%27";                        $url=str_replace('{keyword}', urlencode($_POST["searchText"]), $url);                $ch = curl_init();            $headers = array(                    "Authorization: Basic " . base64_encode($credentials)                );                $ch = curl_init();            curl_setopt($ch, CURLOPT_URL, $url);                curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);                 curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);                curl_setopt($ch, CURLOPT_FAILONERROR, true);                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);                curl_setopt($ch, CURLOPT_AUTOREFERER, true);                curl_setopt($ch, CURLOPT_TIMEOUT, 10);            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);                $rs = curl_exec($ch);            echo($rs);                curl_close($ch);                return $rs;        }            ?>        </form>    </body></html>


I had to add

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

in order to make it work, at least in my local copy (WAMP).

Hope it helps, I have been messing with this all the day.


$WebSearchURL = $ServiceRootURL . 'Image?$format=json&Query=';  

This is part of the prob

This wont give the url bing is looking for

e.g. https://api.datamarket.azure.com/Bing/SearchWeb/Web?Query=%27love+message%27 

it would be

https://api.datamarket.azure.com/Bing/Search/Image?$format=json&Query=%27love+message%27 

whereas you want a web not an image search and also format and other parameters shld be after the query

"image" should be "web"

I just spent 3 days trying to get this to work.