2011-08-30 53 views
2

我有一個雅虎BOSS V1的穩定測試頁面,我需要與使用OAuth的V2代碼兼容。這裏是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 BOSS示例代碼:

<!--###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更換$ APPID在V1。但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>