2011-08-30 4 views
2

OAuth를 사용하는 V2 코드와 호환되도록해야하는 Yahoo BOSS V1의 테스트 페이지가 있습니다. V1 페이지는 다음과 같습니다.Yahoo BOSS V1의 PHP 코드를 BOSS V2로 변경

<!--###V1 CODE###--> 
<html> 
<head><title>Yahoo BOSS v2 testing</title></head> 
<body> 
<form action="search.php" method="GET"> 
<label for="query"> Search </label> 
<?php 
echo '<input name="query" value="' . $_GET['query'] . '">'; 
?> 
<input type="submit" value="Search"> 
</form> 

<?php 
$search_term = $_GET['query']; 
if ($search_term != "") { 
// Build search request. 
$base_url = "http://boss.yahooapis.com/ysearch/"; 
$vertical = "web/"; 
$version = "v1/"; 
$search_term = urlencode($search_term); 
$appid = "?appid=" . "your-app-id-here"; // replace with your app-id 
$start = "&start=" . "0"; 
$count = "&count=" . "10"; 
$request_url = $base_url . $vertical . $version . $search_term . $appid . $start . $count; 
// Send search request. 
$curl_handle = curl_init($request_url); 
curl_setopt($curl_handle,CURLOPT_URL, $request_url); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 5); 
$raw_results = curl_exec($curl_handle); 
curl_close($curl_handle); 
$results_dict = json_decode($raw_results); 
$results = $results_dict->ysearchresponse->resultset_web; 
} 
else { 
$results = array(); 
} 
?> 

<!-- #### RESULTS BEGIN ####--> 
<div id="results"> 
<?php 
foreach ($results as $result) { 
echo '<div class="result">'; 
echo '<h3 class="title"><a href='.$result->clickurl.'">'.$result->title.'</a></h3>'; 
echo '<p class="summary">'.$result->abstract.'</p>'; 
echo '</div>'; 
} 
?> 
</div> 

<?php 
// Some code... 
//$start = "&start=" . "0"; 
$start_val = $_GET['start']; 
if ($start_val == "") $start_val = 0; 
$start = "&start=" . $start_val; 
// Some more code... 
$count_val = 10; 
$count = "&count=" . $count_val; 

if ($query != "") { 
if ($start_val != 0) { 
echo '<a href="?query='.$_GET['query'] . '&start='. (intval($start_val) - intval($count_val)) .'">previous</a>'; 
echo '<span> | </span>'; 
} 
echo '<a href="?query='.$_GET['query'] . '&start='.(intval($start_val) + intval($count_val)) . '">next</a>'; 
} 
?> 

</body> 
</html> 

이 V1 코드는 대부분 저에게 의미가 있습니다. BOSS V2 PHP 코드를이 코드에 통합해야합니다. 그러나 어떻게?

<!--###V2 CODE###--> 
<?php 
require("OAuth.php"); 

$cc_key = "your consumer key here"; 
$cc_secret = "your consumer secret here"; 
$url = "http://yboss.yahooapis.com/ysearch/web"; 
$args = array(); 
$args["q"] = "yahoo"; 
$args["format"] = "json"; 

$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)); 
$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); 
print_r($results); 
?> 

내가 V2에서 $의 cc_key와 $ cc_secret과 V1에 $의 APPID를 교체 할 필요가 있다고 생각 : 아래는 V2 BOSS 예제 코드입니다. 그러나 V2의 12-22 행은 매우 혼란 스럽습니다. V2의 예제 코드를 사용하면 V1의 코드는 어떻게 생겼을까요?

답변

0

나는 이것을 직접 해결하려고 시도했다. 나는 PHP에 익숙한 사람의 피드백에 감사 할 것입니다.

<html> 
<head><title>Yahoo BOSS v2 testing</title></head> 
<body> 
<form action="search.php" method="GET"> 
<label for="query"> Search </label> 
<?php 
echo '<input name="query" value="' . $_GET['query'] . '">'; 
?> 
<input type="submit" value="Search"> 
</form> 

<?php 

require("OAuth.php"); 

$search_term = $_GET['query']; 
if ($search_term != "") { 

// Build search request. 
$cc_key = "your consumer key here"; 
$cc_secret = "your consumer secret here"; 
$url = "http://yboss.yahooapis.com/ysearch/web"; 
$args = array(); 
$args["q"] = "yahoo"; 
$args["format"] = "json"; 

// Send search request. 
$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)); 
$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); 
print_r($results); 
} 
else { 
$results = array(); 
} 
?> 

<!-- #### RESULTS BEGIN ####--> 
<div id="results"> 
<?php 
foreach ($results as $result) { 
    echo '<div class="result">'; 
    echo '<h3 class="title"><a href='.$result->clickurl.'">'.$result->title.'</a></h3>'; 
    echo '<p class="summary">'.$result->abstract.'</p>'; 
    echo '</div>'; 
} 
?> 
</div> 

<?php 
//-//$start = "&start=" . "0"; 
//$start_val = $_GET['start']; 
//if ($start_val == "") $start_val = 0; 
// $start = "&start=" . $start_val; 
//$count_val = 10; 
//$count = "&count=" . $count_val; 

//if ($query != "") { 
// if ($start_val != 0) { 
// echo '<a href="?query='.$_GET['query'] . '&start='. (intval($start_val) - intval($count_val)) .'">previous</a>'; 
// echo '<span> | </span>'; 
// } 
// echo '<a href="?query='.$_GET['query'] . '&start='.(intval($start_val) + intval($count_val)) . '">next</a>'; 
// } 
?> 

</body> 
</html> 
관련 문제