MetaWeblog API (xmlrpc) - 안드로이드 네이버/티스토리 블로그 연동
2016. 2. 1. 16:55ㆍPrograming/Android / Java
Android Application에서 또는 기타 Application에서 블로그에 글쓰기, 수정, 삭제, 댓글 등의 작업을 하기 위해서는 MetaWebBlog를 이용하여야 합니다.
티스토리, 네이버 등에서 사용 할 수 있는 BlogAPI의 표준 명칭은 RFC: MetaWeblog API (MWA) 이며,
MetaWeblog API 는 외부프로그램을 이용하여 블로그에 게시물을 올리거나 편집을 할 수 있게 하는 프로그래밍 인터페이스로 클라이언트 프로그램과 웹 로그(티스토리 같은 블로그) 서버간 통신방식은 XML-RPC 프로토콜을 사용합니다.
MetaWeBlog는 xmlrpc기반으로 되어있어 웹 인터페이스가 없어도 구현이 가능하다고 합니다.
우리나라 거의 모든 블로그들이 MetaWeBlog형식을 취하고있어 일단 블로그들 중에 국내에서 가장 많이 쓰이는 네이버, 티스토리가 가능하다는 사실을 확인!!!
특히 티스토리, 네이버 등에서 구현해서 해보니 잘 되는 것을 확인 확인하였으며, XMLRPC 는 아래 첨부 파일을 사용하면 됩니다.
시작전에 해야될 작업
try {
xmlrpcConfig.setServerURL(new URL(지원되는 API주소 적용));
//예 네이버 같은 경우 https://api.blog.naver.com/xmlrpc 로 저장 된다.
client.setConfig(xmlrpcConfig);
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("ERROR: " + ex.getMessage());
}
최신 글 가져 오는 방법
Object[] cats = new Object[] {};
try {
cats = (Object[]) this.client.execute("metaWeblog.getRecentPosts",
new Object[] {this.blogid, this.username, this.password, 3});
//blogid : ID, username : 대부분 ID와 동일, password : API키값, 가져올 게시글 수(int형, 나머진 String형)
} catch (Exception e) {
e.printStackTrace();
System.out.println("ERROR: " + e.getMessage());
}
※ 리턴값은 api 상 struct 형태로 리턴되지만, Hashtable형태로 되어있다. 분해 방법은 여럿이지만 난 HashMap형태로 바꿔서 사용하였다.
예문
for (int i = 0; i < cats.length; i++) {
HashMap category = (HashMap) cats[i];
System.out.println((String)category.get("title")); //타이틀 부분 가져오기
}
카테고리 가져 오는 방법
public Object[] GetCategories() {
Object[] cats = new Object[] {};
try {
cats = (Object[]) this.client.execute("metaWeblog.getCategories",
new Object[] { this.blogid, this.username, this.password });
} catch (Exception e) {
e.printStackTrace();
System.out.println("ERROR: " + e.getMessage());
}
}
리턴되는 값은 최근글 가져오기와 동일
글작성 방법
public void PostIt(String title, String description, String category) {
Hashtable post = new Hashtable();
if (title != null)
post.put("title", title); //제목 String형
post.put("dateCreated", new Date()); //날짜
post.put("description", description); //내용 String형
post.put("tags", "test"); //태그 넣기
post.put("categories", "test"); //원하는 카테고리로 넣기
//각 블로그API에서 지원 형태는 조금 다를 수 있다. 그건 원하는 블로그 API사이트를 참고하자, 이 형태는 네이버 블로그 형태이다.
Hashtable categories = new Hashtable();
String blogpostid = ""; //작성된 포스트 아이디 로 리턴 받음
Boolean result = Boolean.TRUE; //공개 비공개 여부 단 공개된 카테고리안에서만 해당됨
try {
blogpostid = (String) this.client.execute("metaWeblog.newPost",
new Object[] { this.blogid, this.username, this.password,
post, result });
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("ERROR: " + ex.getMessage());
}
}
위 3가지 방법은 패스 하도록 한다.
참고사이트 :
http://www.ibm.com/developerworks/kr/library/x-voicexml3/
http://egloos.zum.com/Charko/v/161806
http://docworlds.tistory.com/entry/Android%EC%97%90%EC%84%9C-%EB%B8%94%EB%A1%9C%EA%B7%B8-Application-%EC%A0%9C%EC%9E%91-0
'Programing > Android / Java' 카테고리의 다른 글
[Android Intent Useage] 안드로이드 Intent 사용 방법 (0) | 2016.04.01 |
---|---|
안드로이드 카카오스토리 공유 하기 (0) | 2016.02.01 |
How To… Speed up Gradle build time (Gradle 빌드 속도) (0) | 2016.01.13 |
[안드로이드/Android] 안드로이드 키 이벤트 (adb shell key event) (0) | 2015.11.12 |
[Android] How to send SMS via ADB shell command? (0) | 2015.11.12 |