必应搜索API和Azure
我试图以编程方式在Microsoft Bing搜索引擎上执行搜索。
这是我的理解:
- 有一个Bing Search API 2.0,即将被替换(2012年8月1日)
 - 新的API被称为Windows Azure Marketplace。
 - 两者使用不同的URL。
 
,您在URL中指定一个密钥(应用程序ID),该密钥将用于验证请求。只要您在URL中将密钥作为参数,就可以获得结果。
,您不要在URL中包括密钥(帐户密钥)。而是输入查询URL,然后服务器将要求您提供凭据。使用浏览器时,会 一个
要求您提供帐号名称和密码。指示是将帐户名保留为空白,然后将您的密钥插入密码字段。
好的,我已经完成了所有这些工作,并且可以在浏览器页面上看到搜索结果的JSON格式的结果。
如何在PHP中以编程方式进行此操作?我尝试从Microsoft MSDN库中搜索文档和示例代码,但是我在错误的位置搜索,或者那里的资源极其有限。
谁能告诉我您如何在PHP中执行“在弹出窗口的密码字段中输入密钥”部分?
在此先感谢。
回答:
新服务的文档可能会变得有些有趣-
特别是在MSDN中。最清晰的解释我能找到的是在迁移指南从这个Bing搜索API页面。最重要的是,迁移指南最后提供了一个很好的PHP简单示例。
编辑:好的,迁移指南是一个起点,但这不是最好的例子。这是两种对我有用的方法(没有代理,防火墙等干扰):
回答:
注意:需要启用“
allow_url_fopen
”才能使其正常工作。您可以使用ini_set(或更改php.ini等)。
if (isset($_POST['submit'])) {
    // Replace this value with your account key
    $accountKey = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';            
    $ServiceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';                    
    $WebSearchURL = $ServiceRootURL . 'Web?$format=json&Query=';
    $cred = sprintf('Authorization: Basic %s', 
      base64_encode($accountKey . ":" . $accountKey) );
    $context = stream_context_create(array(
        'http' => array(
            'header'  => $cred
        )
    ));
    $request = $WebSearchURL . urlencode( '\'' . $_POST["searchText"] . '\'');
    $response = file_get_contents($request, 0, $context);
    $jsonobj = json_decode($response);
    echo('<ul ID="resultList">');
    foreach($jsonobj->d->results as $value)
    {                        
        echo('<li class="resultlistitem"><a href="' 
                . $value->URL . '">'.$value->Title.'</a>');
    }
    echo("</ul>");
}
回答:
如果已安装cURL,最近这是正常的情况:
<?php  $query = $_POST['searchText'];
  $accountKey = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
  $serviceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';  
  $webSearchURL = $serviceRootURL . 'Web?$format=json&Query=';
  $request = $webSearchURL . "%27" . urlencode( "$query" ) . "%27";
  $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);
  $response = json_decode($response);
  echo "<ol>";
  foreach( $response->d->results as $result ) {
    $url = $result->Url;
    $title = $result->Title;
    echo "<li><a href='$url'>$title</a></li>";
  }
  echo "</ol>";
?>
[WTS]将SearchWeb更改为Search。
以上是 必应搜索API和Azure 的全部内容, 来源链接: utcz.com/qa/417107.html

