api 코드 한번 봐주세요.

api 코드 한번 봐주세요.

QA

api 코드 한번 봐주세요.

답변 3

본문

여기 고수분들 도움을 얻어서 거의 성공하긴 했는데 그냥 검색은 되는데 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값 출력하는거 수정해봤습니다.

답변 감사 드립니다. 이제 제대로 되네요. 항상 도움에 감사 드립니다.
근데 @$_GET['book'] 앞에 골뱅이 저거 넣어야 되나요? 안 넣어도 일단 실행은 되네요.
오늘 교보문고에 갔다 왔습니다. xml 은 어렵다고 해서 json 에 관한 책이 있나 봤더니 책이 거의 없네요.
json 공부를 좀 해보고 싶은데 마땅한 교재 같은게 없네요.
api 공부할려면 xml 보다 json 이 낫다는 얘길 들었거든요.

어떤 부분이 오류인지요? 두번째 링크로 들어가서 폼에서 검색하니 첫번째 링크랑 똑같이 뜹니다

아래코드처럼 위에다가 넣으니까  그냥 Error 내용:    이것만 나타납니다.  else 이하가 안 나타나야 정상이지 않나요?

if($encText !=''){
  $url = "https://openapi.naver.com/v1/search/book.json?query=".$encText;
 }

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #curl ×
전체 96
© SIRSOFT
현재 페이지 제일 처음으로