次の方法で共有


MetaWeblogAPI VisualBasic .NET コード サンプル

この VisualBasic.NET サンプルでは、MetaWeblog API でサポートされているすべてのメソッドの使い方を示します。

この VisualBasic.NET コード サンプルでは、MetaWeblog API でサポートされているすべてのメソッドの使い方を示します。このサンプルを利用して、ブログ記事のテキストや属性を外部プログラムで取得したり設定したりできます。このサンプルでは、クライアント アプリケーションとブログ サーバー間の通信に XML-RPC プロトコルが使用されます。

Imports System
Imports CookComputing.XmlRpc
Imports System.Net

Namespace MetaWeblogApi

'/ <summary> 
'/ この構造体はユーザーのブログに関する情報を表します。 
'/ </summary> 
<XmlRpcMissingMapping(MappingAction.Ignore)> _
Structure UserBlog
Public url As String
Public blogid As String
Public blogName As String
End Structure

'/ <summary> 
'/ この構造体はユーザーに関する情報を表します。 
'/ </summary> 
<XmlRpcMissingMapping(MappingAction.Ignore)> _
Structure UserInfo
Public url As String
Public blogid As String
Public blogName As String
Public firstname As String
Public lastname As String
Public email As String
Public nickname As String
End Structure

'/ <summary> 
'/ この構造体は、getCategories() メソッドによって返される可能性のある 
'/ カテゴリに関する情報を表します。 
'/ </summary> 
<XmlRpcMissingMapping(MappingAction.Ignore)> _
Structure Category
Public description As String
Public title As String
End Structure

'/ <summary> 
'/ この構造体は、editPost()、getRecentPosts()、および getPost() メソッドによって返される 
'/ 可能性のある記事に関する情報を表します。 
'/ </summary> 
<XmlRpcMissingMapping(MappingAction.Ignore)> _
Structure Post
Public dateCreated As DateTime
Public description As String
Public title As String
Public postid As String
Public categories() As String
End Structure

'/ <summary> 
'/ このクラスを使用することにより、MetaWeblog API を介して MSN スペース上のブログと 
'/ プログラムで対話することができます。 
'/ </summary> 
<XmlRpcUrl("https://storage.msn.com/storageservice/MetaWeblog.rpc")> _
Class MsnSpacesMetaWeblog
Inherits XmlRpcClientProtocol


'/ <summary> 
'/ 最近の下書きのブログ記事と下書き以外のブログ記事を、投稿日時の降順で並べ替えて返します。 
'/ </summary> 
'/ <param name="blogid">記事の作成先がユーザーのブログであることを示す "MyBlog" という文字列にする必要があります。</param> 
'/ <param name="username">ユーザーのスペースの名前。</param> 
'/ <param name="password">ユーザーの秘密のキーワード。</param> 
'/ <param name="numberOfPosts">返す記事の数。最大値は 20 です。</param> 
'/ <returns></returns> 
<XmlRpcMethod("metaWeblog.getRecentPosts")> _
Public Function getRecentPosts(ByVal blogid As String, ByVal username As String, ByVal password As String, ByVal numberOfPosts As Integer) As Post()

Return CType(Me.Invoke("getRecentPosts", New Object() {blogid, username, password, numberOfPosts}), Post())
End Function 'getRecentPosts


'/ <summary> 
'/ ブログに新しい記事を投稿します。 
'/ </summary> 
'/ <param name="blogid">記事の作成先がユーザーのブログであることを示す "MyBlog" という文字列にする必要があります。</param> 
'/ <param name="username">ユーザーのスペースの名前。</param> 
'/ <param name="password">ユーザーの秘密のキーワード。</param> 
'/ <param name="post">更新するコンテンツを表す構造体。</param> 
'/ <param name="publish">false の場合、下書きの記事です。</param> 
'/ <returns>新しく作成された記事の postid。</returns> 
<XmlRpcMethod("metaWeblog.newPost")> _ 
Public Function newPost(ByVal blogid As String, ByVal username As String, ByVal password As String, ByVal content As Post, ByVal publish As Boolean) As String

Return CStr(Me.Invoke("newPost", New Object() {blogid, username, password, content, publish}))
End Function 'newPost

'/ <summary> 
'/ ブログ上の既存の記事を編集します。 
'/ </summary> 
'/ <param name="postid">更新する記事の ID。</param> 
'/ <param name="username">ユーザーのスペースの名前。</param> 
'/ <param name="password">ユーザーの秘密のキーワード。</param> 
'/ <param name="post">更新するコンテンツを表す構造体。</param> 
'/ <param name="publish">false の場合、下書きの記事です。</param> 
'/ <returns>常に true を返します。</returns> 
<XmlRpcMethod("metaWeblog.editPost")> _ 
Public Function editPost(ByVal postid As String, ByVal username As String, ByVal password As String, ByVal content As Post, ByVal publish As Boolean) As Boolean

Return CBool(Me.Invoke("editPost", New Object() {postid, username, password, content, publish}))
End Function 'editPost

'/ <summary> 
'/ ブログから記事を削除します。 
'/ </summary> 
'/ <param name="appKey">この値は無視されます。</param> 
'/ <param name="postid">更新する記事の ID。</param> 
'/ <param name="username">ユーザーのスペースの名前。</param> 
'/ <param name="password">ユーザーの秘密のキーワード。</param> 
'/ <param name="post">更新するコンテンツを表す構造体。</param> 
'/ <param name="publish">この値は無視されます。</param> 
'/ <returns>常に true を返します。</returns> 
<XmlRpcMethod("blogger.deletePost")> _ 
Public Function deletePost(ByVal appKey As String, ByVal postid As String, ByVal username As String, ByVal password As String, ByVal publish As Boolean) As Boolean

Return CBool(Me.Invoke("deletePost", New Object() {appKey, postid, username, password, publish}))
End Function 'deletePost


'/ <summary> 
'/ ユーザーのスペースに関する情報を返します。ユーザーがスペースを持っていない場合は、空の配列が返されます。 
'/ </summary> 
'/ <param name="appKey">この値は無視されます。</param> 
'/ <param name="postid">更新する記事の ID。</param> 
'/ <param name="username">ユーザーのスペースの名前。</param>
'/ <returns>ユーザーの各ブログを表す構造体の配列。
'/ ユーザーが持つことができるスペースは 1 つだけであり、スペース内のブログは 1 つであるため、この配列に格納される構造体は最大で 1 つです。</returns> 
<XmlRpcMethod("blogger.getUsersBlogs")> _ 
Public Function getUsersBlogs(ByVal appKey As String, ByVal username As String, ByVal password As String) As UserBlog()

Return CType(Me.Invoke("getUsersBlogs", New Object() {appKey, username, password}), UserBlog())
End Function 'getUsersBlogs

'/ <summary> 
'/ ユーザーの基本情報を返します (名前、電子メール アドレス、ユーザー ID など)。 
'/ </summary> 
'/ <param name="appKey">この値は無視されます。</param> 
'/ <param name="postid">更新する記事の ID。</param> 
'/ <param name="username">ユーザーのスペースの名前。</param>
'/ <returns>ユーザーのプロフィール情報が格納された構造体。 
'/各構造体には、"nickname"、"userid"、"url"、"e-mail"、"lastname"、および "firstname" 
'/フィールドがあります。</returns> 
<XmlRpcMethod("blogger.getUserInfo")> _ 
Public Function getUserInfo(ByVal appKey As String, ByVal username As String, ByVal password As String) As UserInfo

Return CType(Me.Invoke("getUserInfo", New Object() {appKey, username, password}), UserInfo)
End Function 'getUserInfo


'/ <summary> 
'/ ブログの特定の記事を返します。 
'/ </summary> 
'/ <param name="postid">更新する記事の ID。</param> 
'/ <param name="username">ユーザーのスペースの名前。</param> 
'/ <param name="password">ユーザーの秘密のキーワード。</param> 
'/ <returns>常に true を返します。</returns> 
<XmlRpcMethod("metaWeblog.getPost")> _ 
Public Function getPost(ByVal postid As String, ByVal username As String, ByVal password As String) As Post

Return CType(Me.Invoke("getPost", New Object() {postid, username, password}), Post)
End Function 'getPost

'/ <summary> 
'/ ブログで使用されているカテゴリの一覧を返します。 
'/ </summary> 
'/ <param name="blogid">記事の作成先がユーザーのブログであることを示す "MyBlog" という文字列にする必要があります。</param> 
'/ <param name="username">ユーザーのスペースの名前。</param> 
'/ <param name="password">ユーザーの秘密のキーワード。</param> 
'/ <returns>構造体の配列。1 つのカテゴリにつき 1 つの構造体が格納されます。
'/ このカテゴリごとの構造体のそれぞれに "description" フィールドがあり、ここにカテゴリ名が格納されます。</returns> 
<XmlRpcMethod("metaWeblog.getCategories")> _ 
Public Function getCategories(ByVal blogid As String, ByVal username As String, ByVal password As String) As Category()

Return CType(Me.Invoke("getCategories", New Object() {blogid, username, password}), Category())
End Function 'getCategories

'/ <summary> 
'/ アプリケーションのメイン エントリ ポイント。 
'/ </summary> 
<STAThread()> _
Shared Sub Main(ByVal args() As String)

Dim mw As MsnSpacesMetaWeblog = New MsnSpacesMetaWeblog
Dim username As String = "!Space3*Pqc3*yUo00Y0!"
Dim password As String = "mYsEcReTwOrD"
mw.Credentials = New NetworkCredential(username, password)

Try

Dim post As Post = New Post
post.categories = New String() {"テスト投稿"}

post.title = "テスト 3"
post.description = "これは 3 回目のテスト投稿です。"
post.dateCreated = DateTime.Now

Dim id As String = mw.newPost("MyBlog", username, password, post, True)

post.title = "テスト 3 (誤字修正済み)"

mw.editPost(id, username, password, post, True)

post = mw.getPost(id, username, password)
Console.WriteLine("'{0}' というタイトルの記事 (投稿日時: '{1}') が編集されました。", post.title, post.dateCreated)
'  ブログで使用されているカテゴリの一覧を表示します。 */ 
Dim categories() As Category = mw.getCategories("MyBlog", username, password)

Dim c As Category
For Each c In categories
Console.WriteLine("カテゴリ:{0}", c.description)
Next
'  最近の 10 件の記事のタイトルを表示します。 */ 
Dim posts() As Post = mw.getRecentPosts("MyBlog", username, password, 10)

Dim p As Post
For Each p In posts
Console.WriteLine("記事タイトル:{0}", p.title)
Next

mw.deletePost(String.Empty, id, username, password, True)
Console.WriteLine("'{0}' というタイトルの記事が削除されました。", post.title)
'  ユーザーのブログに関する情報を取得します。 */ 
Dim blogs() As UserBlog = mw.getUsersBlogs(String.Empty, username, password)

Dim b As UserBlog
For Each b In blogs
Console.WriteLine("'{0}' の URL は {1} です。", b.blogName, b.url)
Next
' ユーザーに関する情報を取得します。 */ 
Dim user As UserInfo = mw.getUserInfo(String.Empty, username, password)
Console.WriteLine("{0} {1} ({2}) は、URL が {3} であるスペースの所有者です。", user.lastname, user.firstname, user.email, user.url)


Catch xrfe As XmlRpcFaultException
Console.WriteLine("エラー:{0}", xrfe.FaultString)
End Try
Console.ReadLine()
End Sub
End Class
End Namespace