【发布时间】:2013-04-30 04:30:20
【问题描述】:
我是一名新手程序员,试图了解 api 的工作原理。这几天一直在研究它,并取得了一些进展,但仍然需要一些帮助。
这似乎是提交查询的url,不太明白如何正确形成它?
$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"; 吗?
$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 Object ( [bossresponse] => stdClass Object ( [responsecode] => 200 [web] => stdClass Object ( [start] => 0 [count] => 50 [totalresults] => 112000000 [results] = > 数组 ( [0] => stdClass 对象 ( [date] => [clickurl] => http://www.yahoo.com/ [url] => http://www.yahoo.com/ [dispurl] => www.yahoo.com [title] => Yahoo! [摘要] => 包含最新突发新闻和有趣文章的 Yahoo! 主页、互联网上现在流行的项目、指向其他 Yahoo! 站点和本地新闻的链接以及...) [1] => stdClass Object ( [date ] => [clickurl] => http://mail.yahoo.com/ [url] => http://mail.yahoo.com/ [dispurl] => mail.yahoo.com [title] => 登录 Yahoo! [abstract] => Yahoo! 让享受世界上最重要的事情。一流的 Yahoo! Mail,打破本地、国家和全球新闻、金融、体育、音乐、电影和...) [2] => stdClass Object ([date] => [clickurl ] => http://us.yahoo.com/ [url] => http://us.yahoo.com/ [dispurl] => us.yahoo.com [title] => Yahoo! [abstract] => 欢迎来到 Yahoo!。新的 Yahoo!经验使您更容易发现您最关心的新闻和信息。这是为您订购的网络。 ) [3] => stdClass Object ( [date] => [clickurl] => http://sports.yahoo.com/ [url] => http://sports.yahoo.com/ [dispurl] =>sports.yahoo.com [title] => Yahoo! Sports - Sports News, Scores, Rumors, Fantasy Games ... [abstract] => 所有最新的体育新闻、比分、谣言、奇幻游戏等等)[4] => stdClass Object ([date] => [clickurl] => http://my.yahoo.com/ [url] => http://my.yahoo.com/ [dispurl] => my.yahoo.com [title] => 登录 Yahoo! [abstract] => My Yahoo 是一个包含新闻、股票报价、天气的可定制网页,以及许多其他功能。) [5] => stdClass Object ( [date] => [clickurl] => http://dir.yahoo.com/ [url] => http://dir.yahoo.com/ [dispurl] => dir.yahoo.com [title] = > Yahoo! Directory [abstract] => 帮助我们改进 Yahoo! Directory - 分享您的想法)[6] => stdClass Object ([date] => [clickurl] => http://search.yahoo.com/ [url] => http://search.yahoo.com/ [dispurl] => search.yahoo.com [title] => Yahoo! Search - Web Search [abstract] => 帮助您准确找到所需内容的搜索引擎。找到最相关的信息,来自整个网络的视频、图像和答案。 ) [7] => stdClass Object ( [date] => [clickurl] => http://news.yahoo.com/ [url] => http://news.yahoo.com/ [dispurl] => news.yahoo.com [title] => Yahoo! News - 最新News & Headlines [abstract] => Yahoo! News 的最新新闻和头条新闻。通过视频和照片获取突发新闻故事和深入报道。) [8] => stdClass Object ( [date] => [clickurl] = > http://autos.yahoo.com/ [url] => http://autos.yahoo.com/ [dispurl] => autos.yahoo.com [title] => 新车图片、价格和评论 - Yahoo! Autos [摘要] => 查看新车图片,了解详情新车价格并在 Yahoo! Autos 上阅读新车评论。比较汽车并从您附近的经销商处获得免费报价。查看 Clear ... ) [9] => stdClass Object ( [date] => [clickurl] = > http://us.m.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 个长问题。
【问题讨论】:
标签: url yahoo-boss-api