api 코드 한번 봐주세요. 채택완료
여기 고수분들 도움을 얻어서 거의 성공하긴 했는데 그냥 검색은 되는데 form 에서 입력해서 넘기는게 안되네요.
정상적으로 동작하는것 : http://awamp.duckdns.org/naverbook3.php">http://awamp.duckdns.org/naverbook3.php
아래 코드로 실행한것: http://awamp.duckdns.org/naverbook2.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=">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개
</p><p><?php</p><p>$client_id = "";</p><p> $client_secret = "";</p><p> $encText = urlencode(@$_GET['book']); // 이부분이 동작 안합니다. urlencode("검색어"); 하면 되는데 $_GET 을 사용하면 안되는군요. 방법이 없을까요? form 에서 책이름을 넣으면 검색되게 하고 싶습니다.</p><p> if(!empty($encText))</p><p> {</p><p><span style="white-space:pre"> </span> $url = "<a href="<a href="https://openapi.naver.com/v1/search/book.json?query=" target="_blank" rel="noopener noreferrer">https://openapi.naver.com/v1/search/book.json?query=</a>"><a href="https://openapi.naver.com/v1/search/book.json?query=" target="_blank" rel="noopener noreferrer">https://openapi.naver.com/v1/search/book.json?query=</a></a>".$encText; </p><p><span style="white-space:pre"> </span> </p><p>
</p><p><span style="white-space:pre"> </span> $is_post = false;</p><p><span style="white-space:pre"> </span> $ch = curl_init();</p><p><span style="white-space:pre"> </span> curl_setopt($ch, CURLOPT_URL, $url);</p><p><span style="white-space:pre"> </span> curl_setopt($ch, CURLOPT_POST, $is_post);</p><p><span style="white-space:pre"> </span> curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);</p><p><span style="white-space:pre"> </span> $headers = array();</p><p><span style="white-space:pre"> </span> $headers[] = "X-Naver-Client-Id: ".$client_id;</p><p><span style="white-space:pre"> </span> $headers[] = "X-Naver-Client-Secret: ".$client_secret;</p><p><span style="white-space:pre"> </span> curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);</p><p><span style="white-space:pre"> </span> curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);</p><p><span style="white-space:pre"> </span> $response = curl_exec ($ch);</p><p><span style="white-space:pre"> </span> $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);</p><p><span style="white-space:pre"> </span> // echo "status_code:".$status_code." ";</p><p><span style="white-space:pre"> </span> curl_close ($ch);</p><p><span style="white-space:pre"> </span> </p><p><span style="white-space:pre"> </span> if($status_code == 200) { //it means OK = successful response</p><p><span style="white-space:pre"> </span> $jsonData = json_decode($response);</p><p><span style="white-space:pre"> </span> for($i=0;$i<count($jsonData->items);$i++)</p><p><span style="white-space:pre"> </span> {</p><p><span style="white-space:pre"> </span> echo $jsonData->items[$i]->title;</p><p><span style="white-space:pre"> </span> echo "
";</p><p><span style="white-space:pre"> </span> echo $jsonData->items[$i]->author;</p><p><span style="white-space:pre"> </span> echo "\r\n";<span style="white-space:pre"> </span></p><p><span style="white-space:pre"> </span> }</p><p><span style="white-space:pre"> </span> </p><p><span style="white-space:pre"> </span> </p><p><span style="white-space:pre"> </span> }else {</p><p><span style="white-space:pre"> </span> echo "Error 내용:".$response;</p><p><span style="white-space:pre"> </span> }</p><p> }</p><p>?></p><p>
</p><p><!DOCTYPE html></p><p><html></p><p><head></p><p><!-- <title>barcoder</title> --></p><p></head></p><p><body></p><p>
</p><p><form action="<span style="color: rgb(72, 72, 72); font-family: Arial, 돋움, Dotum; font-size: 14.004px;">naverbook2</span>.php" method="get"></p><p><input type="text" name="book" "></p><p><input type="submit" name="submit" value="submit"></p><p></form></p><p> </p><p></body></p><p></html></p><p>
get값이 없을경우 오류처리와 for문으로 결과값 items값 출력하는거 수정해봤습니다.
답변에 대한 댓글 3개
json같은경우는 교재말고 구글 검색해서 정보 찾아보시는게 더 빠르실꺼예요
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 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 이 낫다는 얘길 들었거든요.