api 코드 한번 봐주세요.
본문
여기 고수분들 도움을 얻어서 거의 성공하긴 했는데 그냥 검색은 되는데 form 에서 입력해서 넘기는게 안되네요.
정상적으로 동작하는것 : http://awamp.duckdns.org/naverbook3.php
아래 코드로 실행한것: http://awamp.duckdns.org/naverbook2.php
<?php
$client_id = "";
$client_secret = "M";
$encText = urlencode($_GET['book']); // 이부분이 동작 안합니다. urlencode("검색어"); 하면 되는데 $_GET 을 사용하면 안되는군요. 방법이 없을까요? form 에서 책이름을 넣으면 검색되게 하고 싶습니다.
$url = "https://openapi.naver.com/v1/search/book.json?query=".$encText;
$is_post = false;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, $is_post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = array();
$headers[] = "X-Naver-Client-Id: ".$client_id;
$headers[] = "X-Naver-Client-Secret: ".$client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// echo "status_code:".$status_code." ";
curl_close ($ch);
if($status_code == 200) { //it means OK = successful response
$jsonData = json_decode($response);
echo $jsonData->items[0]->title;
echo "<br>";
echo $jsonData->items[0]->author;
echo "\r\n";
}else {
echo "Error 내용:".$response;
}
?>
<!DOCTYPE html>
<html>
<head>
<!-- <title>barcoder</title> -->
</head>
<body>
<form action="naverbook2.php" method="get">
<input type="text" name="book" ">
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
답변 3
<?php
$client_id = "";
$client_secret = "";
$encText = urlencode(@$_GET['book']); // 이부분이 동작 안합니다. urlencode("검색어"); 하면 되는데 $_GET 을 사용하면 안되는군요. 방법이 없을까요? form 에서 책이름을 넣으면 검색되게 하고 싶습니다.
if(!empty($encText))
{
$url = "https://openapi.naver.com/v1/search/book.json?query=".$encText;
$is_post = false;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, $is_post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = array();
$headers[] = "X-Naver-Client-Id: ".$client_id;
$headers[] = "X-Naver-Client-Secret: ".$client_secret;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// echo "status_code:".$status_code." ";
curl_close ($ch);
if($status_code == 200) { //it means OK = successful response
$jsonData = json_decode($response);
for($i=0;$i<count($jsonData->items);$i++)
{
echo $jsonData->items[$i]->title;
echo "<br>";
echo $jsonData->items[$i]->author;
echo "\r\n";
}
}else {
echo "Error 내용:".$response;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<!-- <title>barcoder</title> -->
</head>
<body>
<form action="naverbook2.php" method="get">
<input type="text" name="book" ">
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
get값이 없을경우 오류처리와 for문으로 결과값 items값 출력하는거 수정해봤습니다.
!-->어떤 부분이 오류인지요? 두번째 링크로 들어가서 폼에서 검색하니 첫번째 링크랑 똑같이 뜹니다
그리고 for 문을 사용해서 결과를 5개만 가져오고 싶은데 코드를 어떻게 수정해야 하나요?