2017-08-23 16 views
0

検索カタログにMendeleyを照会し、特定のジャーナルのデータを検索するためのコードをPHPで作成しました。しかし、問題は結果が100まで限定されているということです。コードは以下の通りでPHPで書かれています。 100結果の後にmendeleyページネーションを追加するにはどうすればよいですか? Mendeley Pagination documentationによれば、改ページのURLは、私はMendeleyページ区切りの使用方法を説明するためにプロトタイピングツールとしてcurl使用するHTTPレスポンスヘッダMendeley検索カタログページ区切り

Linkフィールドから得ることができる

function auth(){ 

$client_id = ''; 
$client_secret = ''; 
$redirect_uri = ''; 

if(isset($_GET['code'])) { 

    if(!isset($_SESSION['access_token'])) { 
     # Authorize 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,"https://api.mendeley.com/oauth/token"); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded;")); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('client_id'=>$client_id, 'client_secret'=>$client_secret, 'code'=>$_GET['code'],'redirect_uri'=>$redirect_uri, 'grant_type'=>'authorization_code'))); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
     //curl_setopt ($ch, CURLOPT_CAINFO, getcwd()."\cacert.pem"); 
     $server_output = curl_exec ($ch); 
     $errmsg = curl_error($ch) ; 
     if($errmsg) { 
      var_dump($errmsg); 
     } 

     curl_close ($ch); 

     $result = json_decode($server_output, true); 
     // var_dump($result); 
     $_SESSION['access_token'] = $result['access_token']; 
    } 
    # Call the main function 
    main(); 

} 

function getResponse($path) { 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"https://api.mendeley.com/".$path); 

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer '.$_SESSION['access_token'], 
    'Accept: application/vnd.mendeley-document.1+json' 
)); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
//curl_setopt ($ch, CURLOPT_CAINFO, getcwd()."\cacert.pem"); 

$server_output = curl_exec ($ch); 
$responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
$header_len = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 
$header = substr($server_output, 0, $header_len); 
$body = substr($server_output, $header_len); 

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

$errmsg = curl_error($ch) ; 
if($errmsg){ 
    var_dump($errmsg); 
} 

curl_close ($ch); 

return json_decode($server_output, true); 

} 


    function main(){ 


    $search_terms = 'Academy of Management Journal'; 

$min_year='2012'; 
$max_year='2016'; 



    $result = getResponse('/search/catalog?source='.urlencode($search_terms).'&min_year='.$min_year.'&max_year='.$max_year.'&limit=2' . '&view=stats'); 
    var_dump($result); 

    if(isset($result)) { 
     if(isset($res['id'])) { 
     $data[] = getResponse('/catalog/'.$res['id']); 
     var_dump($data); 
     sleep(2); 
    } 



} 

答えて

0

curl -s -D - 'https://api.mendeley.com//search/catalog?source=Academy%20of%20Management%20Journal&min_year=2012&max_year=2016' -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Accept: application/vnd.mendeley-document.1+json' 

を実行している例では

HTTP/1.1 200 OK 
Content-Type: application/vnd.mendeley-document.1+json 
Date: Tue, 29 Aug 2017 15:13:34 GMT 
Link: <https://api.mendeley.com/search/catalog?marker=00000000-0000-000a-0000-000000000000&limit=10&source=Academy%20of%20Management%20Journal&min_year=2012&reverse=false&max_year=2016&order=asc>; rel="next" 
Mendeley-Count: 4185202 
Vary: Accept-Encoding 
Vary: Accept-Encoding 
X-Mendeley-Trace-Id: Anv9p0YeJtY 
Content-Length: 17779 
Connection: keep-alive 

だから次のページはURL

https://api.mendeley.com/search/catalog?marker=00000000-0000-000a-0000-000000000000&limit=10&source=Academy%20of%20Management%20Journal&min_year=2012&reverse=false&max_year=2016&order=asc 
を使用して解決することができます次のヘッダーを生成します
関連する問題