目錄
- 1. 什么是Metaweblog?
- 2. Metaweblog的應用
- 3. 如何使用Metaweblog
- 4. 本專案介紹
- 4.1 metaweblog與java之間的關系映射
- 4.2 使用JavaMetaweblogClient
- 5. 最后的話
- FAQ
- 聯系我
不知你是否會遇到下面這樣的情況:想要通過java上傳博客,結果卻發現api的使用有些復雜,沒關系,這里幫你解決了api的問題,在使用Metaweblog的時候,只需要呼叫網頁上同名的方法就好了,一鍵發送命令,感受呼叫api的快感,
1. 什么是Metaweblog?
Metaweblog是一個webservice,也就是在網路上使用的api,它基于xml-rpc實作,對于現存的博客平臺,例如博客園、開源中國、wordpress等都實作了metaweblog,通過這個api,你可以不登錄網頁,直接通過一些程式來增刪查改你的博客,上傳媒體檔案,
2. Metaweblog的應用
metaweblog的適用范圍不太廣,但是絕對能滿足于博客管理的需要,通常,面對下面情況,你就可以使用metaweblog:
- 你已經編輯好了一篇博客,保存為markdown檔案,想要快速上傳博客;
- 你想洗掉一篇博客;
- 你想更新一篇博客,但又不想復制并粘貼全部;
- 你用離線編輯器寫博客,但是圖片又不想保存在本地,想直接把圖片上傳到博客服務器里面;
因此,metaweblog可以滿足你的需要
3. 如何使用Metaweblog
在使用本專案前,你首先需要了解一下metaweblog的原理以及如何使用,
目前,有關metaweblog的官網已經崩了,但是你仍然可以在這里查到它的api,

如圖所示,有很多的方法(函式)可供呼叫,顯然,你可以按照它的指示呼叫方法,實作博客的增刪查改和媒體檔案的上傳,
在這張圖里,我們看到的是博客園的api呼叫界面,而別的網站則不一定有這樣的界面,但是你可以自己嘗試它們的api是否開放,下面是各大博客網站的api地址
-
博客園:https://rpc.cnblogs.com/metaweblog/你的用戶名,你可以在你的后臺設定里查看有關設定
-
開源中國:https://my.oschina.net/action/xmlrpc
-
51cto:http://imguowei.blog.51cto.com/xmlrpc.php
-
網易(163):http://os.blog.163.com/word/
-
typecho 博客:http://xx.com/action/xmlrpc,其中 xx.com 為你的博客網址,如果 typecho 還沒有進行 urlrewrite,則為 http://xx.com/index.php/action/xmlrpc
-
新浪博客: http://upload.move.blog.sina.com.cn/blog_rebuild/blog/xmlrpc.php 新浪博客的 API 已關閉了
-
CSDN: http://write.blog.csdn.net/xmlrpc/index,可惜CSDN的api也關閉了
-
自建wordpress博客: http://www.example.com/xmlrpc.php,其中
www.example.com是你的網站地址域名.
4. 本專案介紹
然而, 對于各種語言, metaweblog的實作也不一樣.因此,你需要去尋找各種語言的實作方法.在網上,你可以查到python如何實作metaweblog,C#更是有專門的api,極大地方便了使用者呼叫,那么,java呢?很抱歉,網上有關java實作metaweblog的文章少之又少,為了解決這種情況,筆者做出了名為JavaMetaweblogClient的api,方便java愛好者去呼叫,去實作,
4.1 metaweblog與java之間的關系映射
如果你看了api的介紹,你就會知道,這個api是給多個語言使用的,所以很多的資料型別java都沒有,那么我們就需要一個映射表,本專案通過apache 的xmlrpc實作,所以我們可以查看他的官方檔案

這些就是你要去了解的,其中,struct的型別對應到java里面是Map<String,Object>,但是你并不需要如此,在本專案中,我已經將struct打包成了一個類物件,例如Post,里面的成員變數就是dateTime description title categories四個.需要用的時候就依次把變數填入即可,
這時,你在使用這些方法時就會更加的得心應手,
4.2 使用JavaMetaweblogClient
本專案本質上只實作了Client,但是很明顯我們只需要client,服務器的事由博客方來干,那么我們就要來了解一下如何使用api,
打開本專案的java檔案,你會看見Client類上有教程,但是在這里我還是會再打一遍,
使用方法大致分為以下三步:(以新建一個博客文章為例)
- 你要創建一個Client物件
- 準備好引數
- 上傳命令,并處理例外
這里我們以newPost方法為例:
public static void newPostTest() {
// 準備好命令所需引數(新建Post物件)
Post post = new Post(new Date(), "# This is a post\n> You can see the Post\n", "Test");
// 準備好回傳值(自己看方法注釋的回傳型別)
String result = null;
// 創建連接客戶端
try { // 自己解決拋出的例外
Client client = new Client("https://www.cycode.club/xmlrpc.php");
result = client.newPost("default", "S*******u", "******", post, false);
} catch (MalformedURLException e) {
e.printStackTrace(); // 一般為URL格式錯誤
} catch (XmlRpcException e) {
e.printStackTrace(); // 一般為引數不全、服務器錯誤、URL輸入錯誤
}
// 輸出結果
System.out.println(result);
}
其中的核心代碼只有一條:
result = client.newPost("default", "S*****u", "*****", post, false);
至于其他的代碼,通常IDE會自己生成,以及提醒你引數的填入,其中Post引數需要直接填入本專案已創建好的Post類,而不是自己寫一個Map<String,Object>.
5. 最后的話
作為新手程式員和他的第一個api,有很多的資訊都在javadoc檔案里,如果有什么問題,盡量去查看docs檔案,有很多位置都可以查看檔案,
- 下載使用的jar包內的docs檔案夾
- github上的專案地址中的docs檔案夾
- docs檔案夾的托管地址(推薦,更新的最快)
FAQ
-
Q:目前程式有什么已知的問題嗎?
A:本專案就是apache的xmlrpc實作的套殼,如果有什么問題,大多是xmlrpc的問題,畢竟現在用xmlrpc的人已經很少了,
不過,我依舊發現了如下問題:
- getPost方法與wordpress上的editor.md插件沖突
-
Q:我想知道哪里有詳細的教程,
A:本人是新手程式員,管理教程會非常的麻煩,但我大量的幫助檔案都寫死在程式里了,查看javadoc檔案獲得的資訊會比在這里大得多,可以查看本檔案第五項查看javadoc地址,
聯系我
- email: [email protected]
- QQ: 1914913486
- 博客園: https://www.cnblogs.com/sxrhhh
- github: https://github.com/cycode0527
- 個人網站: https://www.sxrhhh.top(還在實驗中)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479891.html
標籤:其他
