api 코드 한번 봐주세요.

api 코드 한번 봐주세요.

QA

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값 출력하는거 수정해봤습니다.

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

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 97
QA 내용 검색
filter #curl ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT