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값 출력하는거 수정해봤습니다.
답변에 대한 댓글 3개
댓글을 작성하려면 로그인이 필요합니다.
그리고 for 문을 사용해서 결과를 5개만 가져오고 싶은데 코드를 어떻게 수정해야 하나요?
댓글을 작성하려면 로그인이 필요합니다.
어떤 부분이 오류인지요? 두번째 링크로 들어가서 폼에서 검색하니 첫번째 링크랑 똑같이 뜹니다
답변에 대한 댓글 4개
Error 내용:{ "errorMessage": "Incorrect query request (잘못된 쿼리요청입니다.)", "errorCode": "SE01" }
if($encText != ''){
echo $jsonData->items[0]->title;
echo "<br>";
echo $jsonData->items[0]->author;
echo "<br>";
}else {
echo "Error 내용:".$response;
}
}
if($encText !=''){
$url = "https://openapi.naver.com/v1/search/book.json?query=".$encText;
}
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
근데 @$_GET['book'] 앞에 골뱅이 저거 넣어야 되나요? 안 넣어도 일단 실행은 되네요.
오늘 교보문고에 갔다 왔습니다. xml 은 어렵다고 해서 json 에 관한 책이 있나 봤더니 책이 거의 없네요.
json 공부를 좀 해보고 싶은데 마땅한 교재 같은게 없네요.
api 공부할려면 xml 보다 json 이 낫다는 얘길 들었거든요.