[php로 원격전송]네이버가 XML-RPC 이제서야 지원합니다.

컴터/php 2009. 8. 21. 12:34





http://section.blog.naver.com/sub/NoticeTip.nhn?board=/read/1000003488/10000000000003416054
http://section.blog.naver.com/sub/NoticeTip.nhn
http://wiki.kldp.org/HOWTO//html/XML-RPC-HOWTO/xmlrpc-howto-php.html

네이버가 XML-RPC 지원합니다.
이제 네이버도 대세를 따르는듯 보입니다.

블로그 API 는 윈워드 2007, WIndows Live Writer 로 많이 들합니다.
하지만 저는 이전의 티스토리처럼 php로 웹페이지를 만들어 놓고 원격포스팅을 하려고 티스토리 페이지에서 비번과 경로만 바꾸면 되겠지하고 작업후 포스팅하였지만 에러를 내뿜더군요.

물론 고수분들은 금방 해결하시겠지만 모르시는 분들을 위해 그리고 웹서핑해보아도 찾을수 없어 기록으로도 남길겸 적습니다.

주의.
비번과 아이디는 위의 링크를 참고.
1. 블로그 아이디는 네이버아이디입니다.
2. 제목, 본문만 필요합니다. 태그와 카테고리 부분은 필요없더군요. 만약 있거나 공란이면 에러인듯..(확실치 않음)
3. 전송후 리턴 값이 에러인데 그 에러가 No CURL ~~~ 이라면 CURL이 연동되지 않으니 인터넷 참고해서 연동하세요.
(xmlrpc.ini 보면 https 는 그쪽을 쓰는듯..)
4. xmlrpc.ini에서
 $GLOBALS['xmlrpc_internalencoding']='ISO-8859-1';->
 $GLOBALS['xmlrpc_internalencoding']='UTF-8';  이렇게 수정..안그럼 한글이 깨지더군요
5. 보통 다른 API에선 글전송되는 것들은 base64로 인코딩하는데 네이버는 깨지더군요. 그래서 string 타입으로 해야 합니다.


소스들어갑니다. 새글 삽입예제입니다. 나머지 수정이나 첨부파일은 다른 사이트 보면 많이 나오니 참고바랍니다.;;

<?
include_once 'xmlrpc.inc';

//참고 : http://simulz.kr/zbxe/1868799
function newPost($title, $description){
 //네이버는 카테고리, 태그값을 아예 받질 않는다..그리고 공란이면 에러나는듯함.
 //네이버는 제목, 내용을 string타입으로 보내야 한다. 남들은 base64인데 이유 모름..
 $g_blog_url = "https://api.blog.naver.com/xmlrpc";
 $user_id = "네이버아이디";
 $password = "네이버발급비번";
 $blogid = "네이버아이디";

 $publish = true;//:공개할거냐 안할거냐인데, 네이버의 블로그 설정에 따라 이므로 이건 상관없음(아무렇게나 해도 됨)

 $client = new xmlrpc_client($g_blog_url); // $client변수에 블로그주소를 저장

 $struct = array( // body (struct변수에 제목, 내용 카테고리, 테그를 배열화해서 넣음)
     'title'   => new xmlrpcval($title, "string"),
     'description'   => new xmlrpcval($description, "string")
     );
     

 $f = new xmlrpcmsg("metaWeblog.newPost",
        array(
         new xmlrpcval($blogid, "string"), // blogid.(블로그아이디)
         new xmlrpcval($user_id, "string"), // user ID. (아이디)
         new xmlrpcval($password, "string"), // password (비밀번호)
         new xmlrpcval($struct , "struct"),
         new xmlrpcval($publish, "boolean") //publish... true는 공개, false는 비공개가 된다.
       )
      );

 $f->request_charset_encoding = 'UTF-8';

 return $response = $client->send($f); // $response에 실행명령삽입($client변수로 블로그 로그인 후 send($f) 글 전달함
}

 

$return = newPost('안녕하세요', 'API로 보낸글 입니다.');
print_r($return); 
?>


 

Trackbacks 0 : Comments 6
  1. 꽃띠 2009.08.22 01:24 Modify/Delete Reply

    ................. 괜히 들어 왔다 머리만 아파 졌다

  2. 상오기 2009.09.05 11:20 Modify/Delete Reply

    티스토리에서 잘 사용하던걸로 테스트 해보니 curl 에러가 나던데 이유가 있었군요 ^^;
    글 내용을 보면 curl 에러를 해결하시고 적으신것 같은데 해결책 좀 부탁 드립니다.
    curl 연동 부분을 찾아봤는데 아직 찾질 못했네요 ^^;
    좋은 주말 보내세요 ^^

    • 우렁씨 2009.09.05 13:53 신고 Modify/Delete

      해결한건 아니고요.

      php 컴파일시 curl 연동한다 고 설정했거든요. 그래서 뒤에 연동작업을 한게 아닙니다. ^^;;

      서버 코로코레이션이라면 php를 --with-curl=경로 옵션주고 재컴파일 해 주면 될겁니다. (철자 확인요;;)
      (http://jacking.x-y.net/entry/php%EC%97%90%EC%84%9C-cURL-%EC%84%A4%EC%B9%98)

      만약 웹호스팅이라면 curl작업을 대신해주는 라이브러리가 있다고 하는데 이게 먹힐지는 모르겠네요.
      (http://code.blitzaffe.com/pages/phpclasses/category/52/fileid/7)

      테스트해보지않고 하는것이라 주의..^^;;

      즐건 주말되세여~

  3. 상오기 2009.09.05 23:19 Modify/Delete Reply

    리턴값이 curl 에러라 네이버쪽이나 소스 문제인가 했는데 제가 이용하고 있는 서버에서 해결해야하는 문제인가 보네요 ^^
    답변 감사 합니다.

Write a comment