我正在尝试使用WindowsAzureMarketplaceAPI执行Bing搜索,我已经下载了他们的指南和示例代码。代码使用基本身份验证准备了一个https请求,但是我经常收到以下错误:
Warning: file_get_contents(https://api.datamarket.azure.com/Data.ashx/Bing/SearchWeb/Web?Query=%27washburn%27&Adult=%27Off%27&$top=50&$format=Atom): failed to open stream: Connection refused
php代码(来自微软的文档):

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

有人知道是什么导致了这个错误吗?我已经正确设置了$accountKey,并在浏览器中进行了测试。让我有点困惑的是127.0.0.1:8888base64_encode($accountKey.":".$accountKey),为什么你需要$accountKey:之前和之后,而当使用浏览器时,你应该将用户名留空,只需在密码字段中输入帐户密钥?

最佳答案

我已经解决了这个问题,下面是我为未来的人们发现的,他们会做同样的事情:
我在上面评论道:

'proxy' => 'tcp://127.0.0.1:8888',
'request_fulluri' => true,

也可以设置base64_encode("ignored:".$accountKey)
根据我在msdn上读到的内容,用户名部分被认为是被忽略的,所以不管它是什么值。我在想可能是长度或者钥匙里的特殊字符把事情搞砸了,所以我用ignored(或者其他什么东西)来代替它。
这就成功了,我可以解析返回的json数据。祝你好运!

关于php - 适用于PHP的Bing搜索的Windows Azure身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10845672/

10-10 06:17