2013-01-18 2 views
-2

J'essaie de chercher certaines images avec la touche api bing. J'ai écrit ce code mais cela ne fonctionne pas, et il ne retourne pas d'erreur. Je pense que c'est une erreur d'api ... pouvez-vous m'aider?bing api recherche

$accountKey = 's+s/s='; 
$rootUri = 'https://api.datamarket.azure.com/Bing/Search'; 

// Get the query. Default to 'sushi'. 
$query = ($_GET['q']) ? $_GET['q'] : 'sushi'; 

// Get the service operation. Default to Web. 
$serviceOp = ($_GET['sop']) ? $_GET['sop'] : 'Web'; 

// Get the market. Default to en-us. 
$market = ($_GET['market']) ? $_GET['market'] : 'en-us'; 

$ServiceRootURL = 'https://api.datamarket.azure.com/Bing/SearchWeb/'; 
$WebSearchURL = $ServiceRootURL . 'Web?$format=json&Query='; 

$request = $WebSearchURL . urlencode('\'' . $query. '\''); 
echo $request; 
//$requestUri = "$rootUri/$serviceOp?\$format=json&Query=$query&Market=$market"; 

$process = curl_init($request); 
curl_setopt($process, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($process, CURLOPT_USERPWD, $accountKey . ":" . $accountKey); 
curl_setopt($process, CURLOPT_TIMEOUT, 30); 
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE); 
$response = curl_exec($process); 
$jsonobj = json_decode($response); 
echo "<br>Ris = ".$jsonobj; 
+0

au moins imprimer/log ce que le cur_exec revient. Le code HTTP lui-même. – Amit

+0

Vous n'avez pas envoyé votre clé API, donc la demande est 401 non autorisée. – j0k

+0

comment puis-je l'envoyer? Merci – michele

Répondre

2

Je saute juste dans the documentation et vous pouvez utiliser file_get_contents au lieu de cURL.

<?php 
$accountKey = 'xxxxx'; 

$auth = base64_encode("$accountKey:$accountKey"); 

$data = array(
    'http'   => array(
    'request_fulluri' => true, 
    'ignore_errors' => true, 
    'header'   => "Authorization: Basic $auth") 
); 

$context = stream_context_create($data); 
$query  = isset($_GET['q']) ? $_GET['q'] : 'sushi'; 
$serviceOp = isset($_GET['sop']) ? $_GET['sop'] : 'Web'; 
$market = isset($_GET['market']) ? $_GET['market'] : 'en-us'; 

$ServiceRootURL = 'https://api.datamarket.azure.com/Bing/Search/'; 
$WebSearchURL = $ServiceRootURL . 'Web?$format=json&Query='; 

$request = $WebSearchURL . urlencode('\'' . $query. '\''); 

// Get the response from Bing. 
$response = file_get_contents($request, 0, $context); 
var_dump($response); 
+1

Le type d'autorisation que vous avez fourni n'est pas pris en charge. Seul Basic et OAuth sont supportés cette erreur est renvoyée avec votre et mon script ..... – michele

+0

@michele Avez-vous mis à jour le '$ accountKey' avec le vôtre? Btw, le 'ServiceRootURL' que vous utilisez est faux, il devrait se terminer par' Search' au lieu de 'SearchWeb'. – j0k

+0

merci, l'URL était incorrecte! – michele