2020년 2월 12일 수요일

XML-RPC를 사용한 네이버 블로그 API 글등록

안녕하세요?
이글은 XML-RPC기술을 이용한 JAVA 프로그램을 구현하여 네이버 블로그에 글을 등록하는 과정을 설명합니다. 일단 XML-RPC라는 기술부터 간단하게 알아보겠습니다.

■ XML-RPC란?
XML기반의 HTTP를 통한 간단하고 이식성 높은 원격 프로시저(Remote Procedure Call) 호출 방법이며 지원하는 언어가 JAVA외에 Perl, Python, C, C++, PHP 등 이며 운영체제는 Unix, Windows 등 가능합니다.
이와 비슷한 기술인 SOAP, JSON-RPC가 존재합니다. - 출처: 위키백과


■ 네이버블로그 API 연동
1. API연결암호 발급받기
네이버 블로그 관리자화면에서 메뉴/글/동영상 관리 > 플러그인/연동 관리 > 글쓰기 API설정에 들어가 API연결암호를 발급받고 URL, ID를 확인합니다.
네이버블로그 API정보 발급

2. JAVA프로그램 구현

API연결 URL를 설정합니다.
xmlrpcClientImpl.setServerURL(new java.net.URL(API_URL));

테스트용 호출프로그램 자체는 단순한것 같습니다. 네이버 블로그 API정보와 블로그 글등록을 위한 카테고리, 제목, 내용, 태그 등을 설정합니다. 내용을 넣을때는 텍스트 뿐만 아니라 HTML도 가능합니다.
Map<String, String> contents = new HashMap<String, String>();
contents.put("categories", "상품소개"); 
contents.put("title", "테스트제목");
contents.put("description", "테스트내용");
contents.put("tags", "태그1, 태그2, 태그3, 태그4");

네이버에서 발급받았던 아이디, API연결암호를 설정 후 호출하면 등록된 글의 블로그 URL이 리턴됩니다.
List<Object> params = new ArrayList<Object>();
params.add(API_ID);  
params.add(API_ID);
params.add(API_PASSWORD); 
params.add(contents);
params.add(new Boolean(true)); 
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
String rsString = (String) client.execute("metaWeblog.newPost", params);
System.out.println(rsString);

이미지첨부같은경우는 별도의 이미지파일을 읽어와서 업로드 후 이미지주소를 리턴받아서 사용하면 됩니다.
File file = new File("이미지경로");
Vector<Object> params = new Vector<Object>();
params.addElement(new String(API_ID));
params.addElement(new String(API_ID));
params.addElement(new String(API_PASSWORD));
Map<String, Object> fileMap = new HashMap<String, Object>();
fileMap.put("name", file.getName());
fileMap.put("type", new MimetypesFileTypeMap().getContentType(file));
fileMap.put("bits", getFileByte(file));
params.addElement(fileMap);
Map<String, Object> res = (HashMap<String, Object>) xmlrpcClient.execute("metaWeblog.newMediaObject", params);
(String) res.get("url");

■ 테스트
프로그램을 사용하여 전송하면 정상적으로 블로그에서 확인이 가능합니다. 이렇게 프로그램으로 글을 등록할수 있는 개수는 하루에 200개만 등록제한 되어있습니다.


끝까지 봐주셔서 감사합니다.

댓글 없음:

댓글 쓰기