안녕하세요. 김대욱입니다. 이번시간에는 MetaWeblogAPI를 사용해서 MetaWeblogAPI를 사용하는 블로그에 원격으로 포스팅하는 방법에대해 소개해 드리려고합니다. 티스토리나 네이버 다음등의 경우 MetaWeblogAPI를 지원하고 있기때문에 이번시간에 소개해 드릴 내용을 활용하시면 간단하게 원격 포스팅 프로그램을 구현하실수 있습니다.
사실 이번 포스팅을 하게된 계기는 저희 어머니께서 예전부터 디카로 찍은 사진을 블로그에 올리고 싶은데 너무 어렵고 힘들다고 해서 어떻게 하면 간단하게 사진을 올릴 수 있도록 할까.. 고민하다가 간단한 프로그램을 제작해서 선물(?)로 드리고자 구현하면서 내용을 그냥 버리기엔아까워서 포스팅하게 되었습니다 !! ㅎㅎ 아직 완전히 구현된게 아니기 때문에 이번 시간에는 스크린샷은 없지만 완성이 되는대로 스샷과 함께 2번째 포스팅을 하도록 하겠습니다 ㅎ
MetaWeblogAPI는 간단하게 말하면 외부 프로그램을 사용해 블로그에 글을 쓰거나, 수정, 삭제 등을 가능케하는 API라고 할 수 있으며 위키페디아 사전에는 아래와 같이 설명되어 있습니다.
The MetaWeblog API is an application programming interface created by software developer Dave Winer that enables weblog entries to be written, edited, and deleted using web services.
짧은 영어 실력으로 해석을 해보면 위에서 말씀드린내용이 어느정도 맞는것 같습니다 ㅎㅎ MetaWeblogAPI와 관련된 자세한 내용은 http://www.xmlrpc.com/metaWeblogApi에서 확인하실 수 있습니다.
그럼 본격적으로 어떻게 하면 C#을 이용해서 MetaWeblogAPI를 사용할 수 있는가에 대해서 살펴보도록 하겠습니다.
MetaWeblogAPI 는 Application과 Server 간의 통신을 위해 XML-RPC 프로토콜을 사용합니다. XML-PRC 프로토콜을 사용하기 위해서 http://www.xml-rpc.net/에서 제공하는 .Net Framework용 라이브러리를 사용했으며, MSDN에도 이를 사용하는 방법에대해 명시되어 있습니다.(http://msdn.microsoft.com/ko-kr/library/bb259697.aspx)
(MSDN에 기본적인 사용방법은 잘 설명이 되어 있기 때문에 저는 이를 사용한 예제 코드 위주로 설명하겠습니다.)
제가 MetaWeblogAPI를 이용해서 구현하고자하는 목표는 단순하게 "블로그에 사진을 올리자!" 이기때문에 새로운 글을작성하는 newpost메서드와 파일을 블로그 서버에 업로드 하는 newMediaObject 메서드를 아래와 같이 구현했습니다. 이외에 서버로 포스팅내용과 첨부파일을 전송하기 위하여 MetaWeblogAPI에 맞춰 Post Class와 MediaObject Class를 구현했습니다. 아래는 제가 사용한 클래스의 전체 소스코드입니다.
XmlRpcClientProtocol를 상속받아 구현한 MetaWeblogAPI클래스에 XmlRpcUrl Attribute를 사용해 BlogAPI의 주소를 입력합니다. 그리고 그리고 MetaWeblog API 에 따라 newpost, newMediaObject메서드를 구현했습니다. XmlRpcClientProtocol의 Invoke메서드를 호출하게 되면 입력한 내용에 따라 기능을 수행하는데, 이때 XmlRpcClientProtocol에서 메서드 명과 파라미터 구조등을 기반으로 통신하게될 XML Data를 구성하기 때문에 대소문자등에 주의 하시기 바랍니다.
그리고 아래 CreateMediaObject는 파일을 업로드 하기 위한 MediaObject객체를 생성하기 위한 메서드입니다. 해당 파일의 내용을 읽고 Content Type을 지정해주는 역할을 합니다. Content Type을 지정하기 위해서 레지스트리에 등록된 Content Type을 검색하도록 구현했으며 없을경우 Appliation/[확장자] 형태로 입력되도록 했습니다.
실제로 사용할 때에는 아래와 같이 사용하시면 되겠습니다.
newPost를 호출할때나, newMediaObject를 호출할때 ID를 두번 입력하는것을 확인 할 수 있는데, 이는 Naver의경우 BlogID가 UserID와 동일하기 때문입니다. (티스토리등에서는 제공하는 Blog ID를 입력하시면되겠습니다.)
이제 PostTest 메서드를 호출하게 되면 아래와 같이 글과 함께 첨부한그림이 정상적으로 출력되는것을 확인하실 수 있습니다.

이것으로 이번 포스팅은 마치며 다음포스팅에서는 실제 UI와 함께 동작하는 과정을 보면서 설명드리도록하겠습니다.(작성하고 보니까 글이 굉장히 많아서인지 상당히 지루해보이네요..)
아래는 이번시간에 사용된 전체 소스코드 입니다. 테스트시 아이디 비밀번호 입력 부분을 본인의 아이디와 비밀번호를 입력하시기 바랍니다. 저희 어머니께서 사용하시는 블로그가 네이버블로그라서 내용이 기준으로 작성되어 있습니다. 테스트를 하시기 위해서는 네이버에서 블로그를 이용해 테스트 하시거나 MetaWeblogAPI의 XmlRpcUrl을 테스트하고자하는 블로그 API주소로 변경하시기바랍니다.
네이버 블로그에서 MetaWeblogAPI를 사용하는 방법은 아래 URL을 참고하시기 바랍니다.
http://section.blog.naver.com/sub/NoticeTip.nhn?board=/read/1000003488/10000000000003416054
사실 이번 포스팅을 하게된 계기는 저희 어머니께서 예전부터 디카로 찍은 사진을 블로그에 올리고 싶은데 너무 어렵고 힘들다고 해서 어떻게 하면 간단하게 사진을 올릴 수 있도록 할까.. 고민하다가 간단한 프로그램을 제작해서 선물(?)로 드리고자 구현하면서 내용을 그냥 버리기엔아까워서 포스팅하게 되었습니다 !! ㅎㅎ 아직 완전히 구현된게 아니기 때문에 이번 시간에는 스크린샷은 없지만 완성이 되는대로 스샷과 함께 2번째 포스팅을 하도록 하겠습니다 ㅎ
MetaWeblogAPI는 간단하게 말하면 외부 프로그램을 사용해 블로그에 글을 쓰거나, 수정, 삭제 등을 가능케하는 API라고 할 수 있으며 위키페디아 사전에는 아래와 같이 설명되어 있습니다.
The MetaWeblog API is an application programming interface created by software developer Dave Winer that enables weblog entries to be written, edited, and deleted using web services.
짧은 영어 실력으로 해석을 해보면 위에서 말씀드린내용이 어느정도 맞는것 같습니다 ㅎㅎ MetaWeblogAPI와 관련된 자세한 내용은 http://www.xmlrpc.com/metaWeblogApi에서 확인하실 수 있습니다.
그럼 본격적으로 어떻게 하면 C#을 이용해서 MetaWeblogAPI를 사용할 수 있는가에 대해서 살펴보도록 하겠습니다.
MetaWeblogAPI 는 Application과 Server 간의 통신을 위해 XML-RPC 프로토콜을 사용합니다. XML-PRC 프로토콜을 사용하기 위해서 http://www.xml-rpc.net/에서 제공하는 .Net Framework용 라이브러리를 사용했으며, MSDN에도 이를 사용하는 방법에대해 명시되어 있습니다.(http://msdn.microsoft.com/ko-kr/library/bb259697.aspx)
(MSDN에 기본적인 사용방법은 잘 설명이 되어 있기 때문에 저는 이를 사용한 예제 코드 위주로 설명하겠습니다.)
제가 MetaWeblogAPI를 이용해서 구현하고자하는 목표는 단순하게 "블로그에 사진을 올리자!" 이기때문에 새로운 글을작성하는 newpost메서드와 파일을 블로그 서버에 업로드 하는 newMediaObject 메서드를 아래와 같이 구현했습니다. 이외에 서버로 포스팅내용과 첨부파일을 전송하기 위하여 MetaWeblogAPI에 맞춰 Post Class와 MediaObject Class를 구현했습니다. 아래는 제가 사용한 클래스의 전체 소스코드입니다.
XmlRpcClientProtocol를 상속받아 구현한 MetaWeblogAPI클래스에 XmlRpcUrl Attribute를 사용해 BlogAPI의 주소를 입력합니다. 그리고 그리고 MetaWeblog API 에 따라 newpost, newMediaObject메서드를 구현했습니다. XmlRpcClientProtocol의 Invoke메서드를 호출하게 되면 입력한 내용에 따라 기능을 수행하는데, 이때 XmlRpcClientProtocol에서 메서드 명과 파라미터 구조등을 기반으로 통신하게될 XML Data를 구성하기 때문에 대소문자등에 주의 하시기 바랍니다.
그리고 아래 CreateMediaObject는 파일을 업로드 하기 위한 MediaObject객체를 생성하기 위한 메서드입니다. 해당 파일의 내용을 읽고 Content Type을 지정해주는 역할을 합니다. Content Type을 지정하기 위해서 레지스트리에 등록된 Content Type을 검색하도록 구현했으며 없을경우 Appliation/[확장자] 형태로 입력되도록 했습니다.
실제로 사용할 때에는 아래와 같이 사용하시면 되겠습니다.
newPost를 호출할때나, newMediaObject를 호출할때 ID를 두번 입력하는것을 확인 할 수 있는데, 이는 Naver의경우 BlogID가 UserID와 동일하기 때문입니다. (티스토리등에서는 제공하는 Blog ID를 입력하시면되겠습니다.)
이제 PostTest 메서드를 호출하게 되면 아래와 같이 글과 함께 첨부한그림이 정상적으로 출력되는것을 확인하실 수 있습니다.
이것으로 이번 포스팅은 마치며 다음포스팅에서는 실제 UI와 함께 동작하는 과정을 보면서 설명드리도록하겠습니다.(작성하고 보니까 글이 굉장히 많아서인지 상당히 지루해보이네요..)
아래는 이번시간에 사용된 전체 소스코드 입니다. 테스트시 아이디 비밀번호 입력 부분을 본인의 아이디와 비밀번호를 입력하시기 바랍니다. 저희 어머니께서 사용하시는 블로그가 네이버블로그라서 내용이 기준으로 작성되어 있습니다. 테스트를 하시기 위해서는 네이버에서 블로그를 이용해 테스트 하시거나 MetaWeblogAPI의 XmlRpcUrl을 테스트하고자하는 블로그 API주소로 변경하시기바랍니다.
네이버 블로그에서 MetaWeblogAPI를 사용하는 방법은 아래 URL을 참고하시기 바랍니다.
http://section.blog.naver.com/sub/NoticeTip.nhn?board=/read/1000003488/10000000000003416054

SimpleBlogPosting.zip
