Как правильно сформировать Yahoo URL-адрес босса

Я начинающий программист, пытающийся понять, как работает 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[""] в список ниже? Например, если у меня есть &format=json в запросе url, то мне также нужно сохранить $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] => Array ([0] => stdClass Object ([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!, последние местные, национальные и глобальные новости, финансы, спорт, музыка, фильмы и...) [2] => объект stdClass ([date] => [clickurl] => http://us.yahoo.com/ [url] => http://us.yahoo.com/ [dispurl] => us.yahoo.com [title] => Yaho о! [abstract] => Новый прием в Yahoo!. Новый Yahoo! опыт помогает вам находить новости и информацию, которая вас больше всего интересует. Это сеть, заказанная для вас.) [3] => stdClass Object ([date] => [clickurl] => http://sports.yahoo.com/ [url] => http://sports.yahoo.com/ [dispurl] => спорт.yahoo.com [title] => Yahoo! Sports - спортивные новости, результаты матчей, слухи, фантастические игры... [аннотация] => все последние спортивные новости, результаты матчей, слухи, фэнтезийные игры и многое другое) [4] = > stdClass Object ([date] => [clickurl] => http://my.yahoo.com/ [url] => http://my.yahoo.com/ [dispurl] => my.yahoo.com [ title] => Войдите в Yahoo! [abstract] => Мой Yahoo - это настраиваемая веб-страница с новостями, биржевыми котировками, погодой и многими другими функциями.) [5] => Объект stdClass ([date] => [clickurl ] => http://dir.yahoo.com/ [url] => http://dir.yahoo.com/ [dispurl] => dir.yahoo.com [title] => Каталог Yahoo! [аннотация] = > Помогите нам улучшить каталог Yahoo! - поделитесь своими идеями) [6] => Объект stdClass ([date] => [clickurl] => http://search.yahoo.com/ [url] => http://search.yahoo.com/ [dispurl] => search.yahoo.com [title] => Yahoo! Search - веб-поиск [аннотация] => поисковая система это поможет вам найти именно то, что вы ищете. Найти наиболее актуальную информацию, видео, изображения и ответы со всей сети.) [7] => stdClass Object ([date] => [clickurl] => http://news.yahoo.com/ [url] => http://news.yahoo.com/ [dispurl] => news.yahoo.com [title] => Новости Yahoo! - последние новости и заголовки новостей [аннотация] => Последние новости и заголовки новостей Yahoo!. Получайте свежие новости и подробные репортажи с видео и фотографиями.) [8] => Объект stdClass ([date] => [clickurl] => http://autos.yahoo.com/ [url] => http://autos.yahoo.com/ [dispurl] => autos.yahoo.com [title] => Новые фотографии автомобилей, цены и обзоры - Yahoo! Autos [аннотация] => Смотрите новые фотографии автомобилей, узнавайте новые цены на автомобили и читайте новые обзоры автомобилей на Yahoo! Autos. Сравните автомобили и получите бесплатное ценовое предложение от дилеры рядом с вами. Проверьте Очистить...) [9] => Объект stdClass ([date] => [clickurl] => http://us.m.yahoo.com/ [url] => http://us.m.yahoo.com/ [dispurl] => us.m.yahoo.com [title] => Yahoo! Mobile [аннотация] => На вашем Yahoo!

Очевидно, что запрос не проходит должным образом, потому что результат все о Yahoo, а не запрос "автомобиль". И похоже, что это неформатированный ответ json, потому что я знаю, что xml сильно отличается. Любые ссылки на хороший учебник по json будут великолепны.

Если бы я мог выяснить, как передать фактический запрос из HTML-формы, я думаю, что он ответил бы на многие из этих вопросов.

Ниже приведен код по умолчанию, который Yahoo предоставляет для отображения результатов:

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

Должен ли я установить какой-то тип кода JSON для этого? Можно ли привести пример или ссылку, чтобы помочь мне лучше понять json, я знаю, что основой этого являются пары ключ-значение, но никогда раньше не работал с json, не знаю, с чего начать....

Я прошу прощения за такой длинный вопрос, но у меня есть много вопросов, и вместо того, чтобы задавать вопросы с несколькими ответами, я решил, что 1 длинный вопрос будет лучшим.

1 ответ

Это то, что я использую для Yahoo BOSS API в PHP, надеюсь, это поможет

<?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
?>
Другие вопросы по тегам