여기 고수분들 도움을 얻어서 거의 성공하긴 했는데 그냥 검색은 되는데 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개 / 댓글 7개
<?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값 출력하는거 수정해봤습니다.
어떤 부분이 오류인지요? 두번째 링크로 들어가서 폼에서 검색하니 첫번째 링크랑 똑같이 뜹니다
답변에 대한 댓글 4개
답변을 작성하려면 로그인이 필요합니다.
근데 @$_GET['book'] 앞에 골뱅이 저거 넣어야 되나요? 안 넣어도 일단 실행은 되네요.
오늘 교보문고에 갔다 왔습니다. xml 은 어렵다고 해서 json 에 관한 책이 있나 봤더니 책이 거의 없네요.
json 공부를 좀 해보고 싶은데 마땅한 교재 같은게 없네요.
api 공부할려면 xml 보다 json 이 낫다는 얘길 들었거든요.