gpt4 book ai didi

php - 新的 Bing API PHP 示例不起作用

转载 作者:可可西里 更新时间:2023-11-01 12:30:59 25 4
gpt4 key购买 nike

Microsoft 自己的新 Bing API PHP 示例不起作用。我尝试了很多方法,它只是显示:

Server Error
401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.

官方文档中给出的示例编码如下,它在

处分解
'proxy' => 'tcp://127.0.0.1:8888',  

我 100% 确定我的 key 是正确的,当我在浏览器 url 中输入它时它工作正常,即

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

(你需要把API key 作为你的密码,用户名可以是任何东西)

<html>
<head>
<link href="styles.css" rel="stylesheet" type="text/css" />
<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']))
{
// Replace this value with your account key
$accountKey = 'BKqC2hIKr8foem2E1qiRvB5ttBQJK8objH8kZE/WJVs=';

$ServiceRootURL = 'https://api.datamarket.azure.com/Bing/Search/';

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

$context = stream_context_create(array(
'http' => array(
//'proxy' => 'tcp://127.0.0.1:8888',
'request_fulluri' => true,
'header' => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey)
)
));

$request = $WebSearchURL . urlencode( '\'' . $_POST["searchText"] . '\'');

echo($request);

$response = file_get_contents($request, 0, $context);

print_r($response);

$jsonobj = json_decode($response);

echo('<ul ID="resultList">');

foreach($jsonobj->d->results as $value)
{
echo('<li class="resultlistitem"><a href="' . $value->MediaURL . '">');

echo('<img src="' . $value->Thumbnail->MediaUrl. '"></li>');
}

echo("</ul>");
}
?>
</form>
</body>
</html>

我已经尝试过 google API 和 Yahoo API,没有一个比这更难。

最佳答案

经过几天与微软技术支持的争论,他们承认它不起作用

这里是使用 CURL 在 BING API 中执行此操作的正确编码,应用 CURL 方法而不是无法将正确的身份验证信息从 Linux 客户端传递到 BING 服务的 file_get_contents。

<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>

关于php - 新的 Bing API PHP 示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com