티스토리 metaWeblog API (XML-RPC) JAVA 샘플 예제


이미 티스토리는 OAuth 2.0 인증과 REST방식의 API를 지원하고 있기때문에, XML-RPC는 더이상 효용가치가 없다고 보지만, 정리하는 김에 적어놓는다.


(참고로 다음블로그의 경우 아예 공식적으로 xml-rpc방식의 api에 대한 기술지원을 중단하겠다고 발표한바 있다.

http://daumdna.tistory.com/653 )




1. 관리자 메뉴의 글설정 > BlogAPI에서 인증키를 확인한다.



3. Apache XML-RPC 라이브러리를 다운받고 classpath 설정


http://archive.apache.org/dist/ws/xmlrpc/binaries/apache-xmlrpc-3.1.3-bin.zip





4. JAVA 샘플


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package com.xmlrpc.tistory;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
 
 
public class XmlRpcTistoryBlog {
 
    static final String API_URL = "http://regexr.tistory.com/api";
 
    
    static final String API_ID = "1111";
    static final String USER_ID = "user@gmail.com";
    static final String API_PASSWORD = "2222";
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        try {
 
            XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
            config.setServerURL(new URL(API_URL));
            
            Map<String, Object> contents = new HashMap<String, Object>();
            
            String categories[] = new String[] {"UNIX"};
            contents.put("categories", categories); // 카테고리 배열
            contents.put("title""여기에 제목을 쓰고"); // 제목
            contents.put("description""여기에 내용을 쓰세요."); // 내용
            contents.put("mt_keywords""태그1, 태그2, 태그3"); // 태크 콤마로 구분한다.
            
            List<Object> params = new ArrayList<Object>();
            
            // 여기에는 API정보에 설정된 ID가 들어간다
            params.add(API_ID);  
            
            // 사용자 계정 즉 이메일이 들어간다.
            params.add(USER_ID);
            
            // API 암호 또는 유저암호 둘다 가능하다.
            params.add(API_PASSWORD); 
            
            // 블로그 컨텐츠 
            params.add(contents);
            
            // 공개여부 true이면 공개, false면 비공개
            params.add(new Boolean(true)); 
            
            XmlRpcClient client = new XmlRpcClient();
            client.setConfig(config);
            
            String rsString = (String) client.execute("metaWeblog.newPost", params);
            
            System.out.println(rsString);
            
        }catch(Exception e) {
            e.printStackTrace();
        }
 
    }
}
 
 



네이버 이글루스 등등 블로그마다 조금씩 api에 차이가 있는데...


티스토리 역시 조금 다른 점이 있는데...


패스워드가 API 정보의 인증키를 써도 통과되고, 로그인 패스워드를 입력해도 통과된다. 둘중 아무거나 쓸수 있다는 점이 특이하다.


그리고 카테고리는 꼭 배열형태로 입력했을때만 먹는다는 점... (그렇다고 카테고리 여러개를 먹는것도 아니다....ㅡㅡ?)




:
Posted by 정규식