URL 使用 Bing 搜索时编码失败
URL encoding failed when using Bing Search
我有一个问题,我尝试将变量传输到我的 PHP 脚本,以便从 Bing 搜索 API.
中检索数据
我使用以下 AJAX 代码:
var bingquery = 'bingquery=' + $('#query').val();
console.log(bingquery);
$.ajax({
method: "POST",
url: "hw8.php",
dataType: "json",
data: bingquery,
success: function(jsondata){
console.log('***Test for News Feeds***');
console.log(jsondata);
}
});
我的 PHP 是:
if (isset($_POST["bingquery"])){
// Replace this value with your account key
$accountKey = '***myaccountkey***';
$WebSearchURL = 'https://api.datamarket.azure.com/Bing/Search/v1/' + 'News?$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["bingquery"] . '\'');
//if I hard code the request URL here, it does work.
$response = file_get_contents($request, 0, $context);
echo $response;
}
不知是不是我的URL编码有问题?因为控制台说 file_get_contents(0%27MYSYMBOL%27) 失败,所以 MYSYMBOL 是我要搜索的字符串。
非常感谢您的帮助!
编码完全没有问题,urlencode
应该使输入字符串 url 安全,而这正是它正在做的,\
有特殊的在 url 中表示,因此它被函数编码。
更新
你是把两个字符串相加,在PHP中.
是用来连接两个字符串的,做如下改动,
$WebSearchURL = 'https://api.datamarket.azure.com/Bing/Search/v1/News';
$request = $WebSearchURL .'?Query='.urlencode($_POST["bingquery"]).'&$format=json;
我有一个问题,我尝试将变量传输到我的 PHP 脚本,以便从 Bing 搜索 API.
中检索数据我使用以下 AJAX 代码:
var bingquery = 'bingquery=' + $('#query').val();
console.log(bingquery);
$.ajax({
method: "POST",
url: "hw8.php",
dataType: "json",
data: bingquery,
success: function(jsondata){
console.log('***Test for News Feeds***');
console.log(jsondata);
}
});
我的 PHP 是:
if (isset($_POST["bingquery"])){
// Replace this value with your account key
$accountKey = '***myaccountkey***';
$WebSearchURL = 'https://api.datamarket.azure.com/Bing/Search/v1/' + 'News?$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["bingquery"] . '\'');
//if I hard code the request URL here, it does work.
$response = file_get_contents($request, 0, $context);
echo $response;
}
不知是不是我的URL编码有问题?因为控制台说 file_get_contents(0%27MYSYMBOL%27) 失败,所以 MYSYMBOL 是我要搜索的字符串。
非常感谢您的帮助!
编码完全没有问题,urlencode
应该使输入字符串 url 安全,而这正是它正在做的,\
有特殊的在 url 中表示,因此它被函数编码。
更新
你是把两个字符串相加,在PHP中.
是用来连接两个字符串的,做如下改动,
$WebSearchURL = 'https://api.datamarket.azure.com/Bing/Search/v1/News';
$request = $WebSearchURL .'?Query='.urlencode($_POST["bingquery"]).'&$format=json;