如何正确形成雅虎老板网址查询

时间:2013-04-30 04:30:20

标签: url yahoo-boss-api

我是一名新手程序员,试图了解api的工作原理。过去几天一直在研究它并取得了一些进展,但仍需要一些帮助。

这似乎是提交查询的网址,不太了解如何正确地形成它?

$url = "http://yboss.yahooapis.com/ysearch/web";

如果我希望结果以json的形式返回,这是否正确?

$url = "http://yboss.yahooapis.com/ysearch/web?q={keywords}&format=json";

这真让我难过,根本不确定如何从传递的html表单中获取实际查询,这是否正确?

$url = "http://yboss.yahooapis.com/ysearch/web?q={keywords}";

如果是这样,那么我是否需要包括:

$args["keywords"]

如果我能弄明白如何从html表单中正确传递查询,我相信大多数其他问题也会得到解答。

关于本节,我假设这些是api服务允许的各种参数的变量。对于每个参数,我是否必须在下面的列表中包含相应的$ args [""]代码?例如,如果我在url查询中有& format = json,那么我还需要保留$ args [" format"] = json&#34 ;;在下面的列表中?

$args = array();
$args["q"] = "yahoo";
$args["format"] = "json";

或者说,如果想要包括:

$url = "http://yboss.yahooapis.com/ysearch/web?q={keywords}&abstract=long";

我还需要包括:

$args[abstract] = "long";

到上面的$ args列表?

真正令我难过的部分是如何获取通过html表单提交的实际查询?

$url = "http://yboss.yahooapis.com/ysearch/web?q={keywords}

我是否包括:

$args["keywords"]

到$ args列表?

当我去测试时,这是我得到的结果:

  

domain.com/search.php?q=car

     

stdClass对象([bossresponse] => stdClass对象([responsecode] => 200 [web] => stdClass对象([start] => 0 [count] => 50 [totalresults] =&gt ; 112000000 [results] =>数组([0] => stdClass对象([date] => [clickurl] => http://www.yahoo.com/ [url] => http://www.yahoo.com/ [dispurl] => www.yahoo.com [title] => Yahoo![摘要] =>雅虎主页上有最新的重大新闻和有趣的文章,互联网上现在有哪些项目趋势,链接到其他Yahoo!网站和本地新闻和...)[1] => stdClass对象([date] => [clickurl] => http://mail.yahoo.com/ [url] => http://mail.yahoo.com/ [dispurl] =&gt ; mail.yahoo.com [title] =>登录Yahoo! [摘要] =>雅虎让您轻松享受世界上最重要的事情。畅销雅虎邮箱,打破本地,国内和全球新闻,金融,体育,音乐,电影......)[2] => stdClass对象([date] => [clickurl] => http://us.yahoo.com/ [url] => {{3} } [dispurl] => us.yahoo.com [title] => Yahoo![摘要] =>对雅虎的新欢迎!新雅虎!经验使您更容易发现您最关心的新闻和信息。这是为您订购的网络。 )[3] => stdClass对象([date] => [clickurl] => http://us.yahoo.com/ [url] => http://sports.yahoo.com/ [dispurl] => sports.yahoo.com [title] => Yahoo!体育 - 体育新闻,分数,谣言,幻想游戏... [摘要] =>所有最新的体育新闻,分数,谣言,幻想游戏等等[4] => stdClass对象([date] => [clickurl] => http://sports.yahoo.com/ [url] => http://my.yahoo.com/ [dispurl] => my.yahoo.com [title] =>登录Yahoo! [abstract] =>我的Yahoo是一个可自定义的网页,包含新闻,股票报价,天气和许多其他功能。)[5] => stdClass对象([date] => [clickurl] => http://my.yahoo.com/ [url] => http://dir.yahoo.com/ [dispurl] => dir.yahoo.com [title] => Yahoo!目录[摘要] =>帮助我们改进Yahoo!目录 - 分享您的想法)[6] => stdClass对象([date] => [clickurl] => http://dir.yahoo.com/ [url] => http://search.yahoo.com/ [dispurl] => search.yahoo.com [title] => Yahoo!搜索 - 网页搜索[摘要] =>搜索引擎,可帮助您准确找到您正在寻找的内容。从网络上查找最相关的信息,视频,图像和答案。)[7] = > stdClass对象([date] => [clickurl] => http://search.yahoo.com/ [url] => http://news.yahoo.com/ [dispurl] => news.yahoo.com [title] => Yahoo!新闻 - 最新新闻和头条新闻[摘要] =>来自雅虎新闻的最新新闻和头条新闻。通过视频和照片获取突发新闻报道和深度报道。)[8] => stdClass对象([date] => [clickurl] => http://news.yahoo.com/ [url] => http://autos.yahoo.com/ [dispurl] => autos.yahoo.com [title] =>新车图片,价格和评论 - Yahoo! Autos [abstract] =>查看新车图片,了解新车价格和阅读Yahoo! Autos上的新车评论。比较汽车并获得您附近的经销商的免费报价。清除...)[9] => stdClass对象([date] => [clickurl] => http://autos.yahoo.com/ [url] => http://us.m.yahoo.com/ [dispurl] => us.m.yahoo.com [title] => Yahoo! Mobile [abstract] =>在您的Yahoo!

显然,查询未正确传递,因为结果全部是关于Yahoo而不是查询" car"。它看起来像是一个未格式化的json响应,因为我知道xml是不同的。任何关于json的好教程的链接都会很棒。

如果我能弄清楚如何从html表单中获取实际查询,我相信它会回答许多这些问题。

以下是我认为是雅虎提供的显示结果的默认代码:

$results = json_decode($rsp);
print_r($results);

我需要为此设置某种类型的json代码吗?可以提供一个示例或链接来帮助我更好地理解json,我知道它的基础是键值对,但之前从未使用过json,不知道从哪里开始....

我为这么长的问题道歉,但我有很多问题,而不是提交多个问题,我认为一个长问题是最好的。

1 个答案:

答案 0 :(得分:0)

这就是我在PHP中使用的Yahoo BOSS API,我希望它有所帮助

<?php
// This enable debugging
ini_set('display_errors', 'On');
error_reporting(E_ALL);

require("OAuth.php"); // You will need to make your own OAuth.php

$cc_key = "---FILL THIS IN WITH YOUR INFO---";
$cc_secret = "---FILL THIS IN WITH YOUR INFO---";
$url = "http://yboss.yahooapis.com/ysearch/web"; // This can be tweaked to search images, videos etc
$args = array();
$args["q"] = "--FILL THIS IN WITH WHAT YOU WANT TO SEARCH FOR---"; // search operator, fill in with query value
$args["count"] = "10"; // Default is 50, restricts results down to 10
$args["web.sites"] = "";  // comma separated value, optional -- usnews.com,nytimes.com, etc
$args["format"] = "json"; // Default is json, options are xml or json, code below only works for JSON at the moment


$consumer = new OAuthConsumer($cc_key, $cc_secret);
$request = OAuthRequest::from_consumer_and_token($consumer, NULL,"GET", $url, $args);
$request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $consumer, NULL);
$url = sprintf("%s?%s", $url, OAuthUtil::build_http_query($args));
echo $url . "<br>";
$ch = curl_init();
$headers = array($request->to_header());
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$rsp = curl_exec($ch);
$results = json_decode($rsp); // Decodes JSON
print_r($results); // Prints results to screen
?>