0

私は 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=車

stdClass Object ( [bossresponse] => stdClass Object ( [responsecode] => 200 [web] => stdClass Object ( [start] => 0 [count] => 50 [totalresults] => 112000000 [results] => Array ( [0] => stdClass オブジェクト ( [date] => [clickurl] => http://www.yahoo.com/ [url] => http://www.yahoo.com/ [dispurl] => www. yahoo.com [title] => Yahoo! [abstract] => 最新のニュース速報や興味深い記事を掲載した Yahoo! のホームページ、現在インターネットで流行しているアイテム、他の Yahoo! サイトやローカル ニュースへのリンクなど... ) [1] => stdClass オブジェクト ( [date] => [clickurl] => http://mail.yahoo.com/ [url] => http://mail.yahoo.com/[dispurl] => mail.yahoo.com [title] => Yahoo! にサインインします。[要約] => Yahoo! あなたの世界で最も重要なことを簡単に楽しむことができます。クラス最高のYahoo! メール、ニュース速報、ローカル、国内、グローバル ニュース、金融、スポーツ、音楽、映画など ... ) [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 [タイトル] => 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 [タイトル] => Yahoo! にサインイン [要約] ] => My Yahoo はカスタマイズ可能な Web ページで、ニュース、株価、天気、その他多くの機能があります。) [5] => stdClass オブジェクト ( [date] => [clickurl] => http://dir.yahoo. com/ [url] => http://dir.yahoo.com/ [dispurl] => dir.yahoo.com [タイトル] => Yahoo! ディレクトリ [要約] => Yahoo! ディレクトリの改善にご協力ください - あなたの情報を共有してくださいアイデア ) [6] =>http://search.yahoo.com/ [url] => http://search.yahoo.com/ [dispurl] => search.yahoo.com [タイトル] => Yahoo! Search - Web Search [abstract] => 探しているものを正確に見つけるのに役立つ検索エンジン。Web 全体から最も関連性の高い情報、ビデオ、画像、回答を見つけます。) [7] => stdClass オブジェクト ( [date] => [clickurl] => http://news.yahoo.com/ [url] => http://news.yahoo.com/ [dispurl] => ニュース.yahoo.com [タイトル] => Yahoo! ニュース - 最新のニュースとヘッドライン [要約] => Yahoo! ニュースの最新ニュースとヘッドライン. ビデオと写真でニュース速報と詳細な報道を入手. ) [8] => stdClass オブジェクト ( [date] => [clickurl] => http://autos.yahoo.com/ [url] =>http://autos.yahoo.com/ [dispurl] => autos.yahoo.com [title] => 新車の写真、価格、レビュー - Yahoo! 自動車 [要約] => Yahoo! で新車の写真を見たり、新車の価格を調べたり、新車のレビューを読んだりできます。自動車。車を比較して、お近くのディーラーから無料の見積もりを入手してください。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 [要旨] => Yahoo!

結果はすべてクエリ「car」ではなく Yahoo に関するものであるため、クエリが適切に渡されていないことは明らかです。また、xml が大きく異なることがわかっているため、フォーマットされていない json 応答のように見えます。json の優れたチュートリアルへのリンクは素晴らしいでしょう。

html フォームから渡される実際のクエリを取得する方法を理解できれば、これらの質問の多くに答えられると思います。

以下は、結果を表示するためにyahooが提供するデフォルトのコードであると私が信じているものです。

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

そのために何らかのタイプのjsonコードを設定する必要がありますか? jsonをよりよく理解するのに役立つ例またはリンクを提供できますか?それの基礎はキーと値のペアであることは知っていますが、以前にjsonを使用したことがないため、どこから始めればよいかわかりません....

非常に長い質問で申し訳ありませんが、質問がたくさんあります。複数の質問を送信する代わりに、1 つの長い質問が最適であると考えました。

4

1 に答える 1

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
?>
于 2013-08-13T04:48:15.800 に答える