【问题标题】:How to correctly form yahoo boss url query如何正确形成 yahoo boss url 查询
【发布时间】: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


    【解决方案1】:

    这是我在 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
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多