- 전체
- Native Apps
- WinJS App
- C# Apps
- XAML
- VB.net
- VisualC.net
- C++
- MFC
- visual studio mobile app dev
- Azure ms cloud service
- Asp.net
- 인공지능 (AI)
- wpf
- UWP
- MAUI
C# Apps MetaWeblogAPI C# 코드 샘플
2019.02.08 14:16
MetaWeblogAPI C# 코드 샘플
이 C# 샘플은 MetaWeblog API에서 지원하는 모든 메서드를 사용하는 방법을 보여 줍니다.
이 C# 코드 예제는 MetaWeblog API에서 지원하는 모든 메서드를 사용하는 방법을 보여 줍니다. 이 예제를 통해 외부 프로그램에서 웹 로그 게시물의 텍스트 및 특성을 가져오고 설정할 수 있습니다. 이 예제는 클라이언트 응용 프로그램과 웹 로그 서버 간 통신을 위한 XML-RPC 프로토콜을 사용합니다.
using System; using CookComputing.XmlRpc; using System.Net; namespace MetaWeblogApi { /// <summary> /// This struct represents information about a user's blog. /// </summary> [XmlRpcMissingMapping(MappingAction.Ignore)] struct UserBlog{ public string url; public string blogid; public string blogName; } /// <summary> /// This struct represents information about a user. /// </summary> [XmlRpcMissingMapping(MappingAction.Ignore)] struct UserInfo{ public string url; public string blogid; public string blogName; public string firstname; public string lastname; public string email; public string nickname; } /// <summary> /// This struct represents the information about a category that could be returned by the /// getCategories() method. /// </summary> [XmlRpcMissingMapping(MappingAction.Ignore)] struct Category{ public string description; public string title; } /// <summary> /// This struct represents the information about a post that could be returned by the /// editPost(), getRecentPosts() and getPost() methods. /// </summary> [XmlRpcMissingMapping(MappingAction.Ignore)] struct Post { public DateTime dateCreated; public string description; public string title; public string postid; public string[] categories; } /// <summary> /// This class can be used to programmatically interact with a Weblog on /// MSN Spaces using the MetaWeblog API. /// </summary> [XmlRpcUrl("https://storage.msn.com/storageservice/MetaWeblog.rpc")] class MsnSpacesMetaWeblog : XmlRpcClientProtocol { /// <summary> /// Returns the most recent draft and non-draft blog posts sorted in descending order by publish date. /// </summary> /// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param> /// <param name="username"> The name of the user’s space. </param> /// <param name="password"> The user’s secret word. </param> /// <param name="numberOfPosts"> The number of posts to return. The maximum value is 20. </param> /// <returns></returns> [XmlRpcMethod("metaWeblog.getRecentPosts")] public Post[] getRecentPosts( string blogid, string username, string password, int numberOfPosts){ return (Post[]) this.Invoke("getRecentPosts", new object[]{ blogid, username, password, numberOfPosts}); } /// <summary> /// Posts a new entry to a blog. /// </summary> /// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param> /// <param name="username"> The name of the user’s space. </param> /// <param name="password"> The user’s secret word. </param> /// <param name="post"> A struct representing the content to update. </param> /// <param name="publish"> If false, this is a draft post. </param> /// <returns> The postid of the newly-created post. </returns> [XmlRpcMethod("metaWeblog.newPost")] public string newPost( string blogid, string username, string password, Post content, bool publish){ return (string) this.Invoke("newPost", new object[]{ blogid, username, password, content, publish}); } /// <summary> /// Edits an existing entry on a blog. /// </summary> /// <param name="postid"> The ID of the post to update. </param> /// <param name="username"> The name of the user’s space. </param> /// <param name="password"> The user’s secret word. </param> /// <param name="post"> A struct representing the content to update. </param> /// <param name="publish"> If false, this is a draft post. </param> /// <returns> Always returns true. </returns> [XmlRpcMethod("metaWeblog.editPost")] public bool editPost( string postid, string username, string password, Post content, bool publish){ return (bool) this.Invoke("editPost", new object[]{ postid, username, password, content, publish}); } /// <summary> /// Deletes a post from the blog. /// </summary> /// <param name="appKey"> This value is ignored. </param> /// <param name="postid"> The ID of the post to update. </param> /// <param name="username"> The name of the user’s space. </param> /// <param name="password"> The user’s secret word. </param> /// <param name="post"> A struct representing the content to update. </param> /// <param name="publish"> This value is ignored. </param> /// <returns> Always returns true. </returns> [XmlRpcMethod("blogger.deletePost")] public bool deletePost( string appKey, string postid, string username, string password, bool publish){ return (bool) this.Invoke("deletePost", new object[]{ appKey, postid, username, password, publish}); } /// <summary> /// Returns information about the user’s space. An empty array is returned if the user does not have a space. /// </summary> /// <param name="appKey"> This value is ignored. </param> /// <param name="postid"> The ID of the post to update. </param> /// <param name="username"> The name of the user’s space. </param> /// <returns> An array of structs that represents each of the user’s blogs. The array will contain a maximum of one struct, since a user can only have a single space with a single blog. </returns> [XmlRpcMethod("blogger.getUsersBlogs")] public UserBlog[] getUsersBlogs( string appKey, string username, string password){ return (UserBlog[]) this.Invoke("getUsersBlogs", new object[]{ appKey, username, password}); } /// <summary> /// Returns basic user info (name, e-mail, userid, and so on). /// </summary> /// <param name="appKey"> This value is ignored. </param> /// <param name="postid"> The ID of the post to update. </param> /// <param name="username"> The name of the user’s space. </param> /// <returns> A struct containing profile information about the user. /// Each struct will contain the following fields: nickname, userid, url, e-mail, /// lastname, and firstname. </returns> [XmlRpcMethod("blogger.getUserInfo")] public UserInfo getUserInfo( string appKey, string username, string password){ return (UserInfo) this.Invoke("getUserInfo", new object[]{ appKey, username, password}); } /// <summary> /// Returns a specific entry from a blog. /// </summary> /// <param name="postid"> The ID of the post to update. </param> /// <param name="username"> The name of the user’s space. </param> /// <param name="password"> The user’s secret word. </param> /// <returns> Always returns true. </returns> [XmlRpcMethod("metaWeblog.getPost")] public Post getPost( string postid, string username, string password){ return (Post) this.Invoke("getPost", new object[]{ postid, username, password}); } /// <summary> /// Returns the list of categories that have been used in the blog. /// </summary> /// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param> /// <param name="username"> The name of the user’s space. </param> /// <param name="password"> The user’s secret word. </param> /// <returns> An array of structs that contains one struct for each category. Each category struct will contain a description field that contains the name of the category. </returns> [XmlRpcMethod("metaWeblog.getCategories")] public Category[] getCategories( string blogid, string username, string password){ return (Category[]) this.Invoke("getCategories", new object[]{ blogid, username, password}); } /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { MsnSpacesMetaWeblog mw = new MsnSpacesMetaWeblog(); string username = "!Space3*Pqc3*yUo00Y0!"; string password = "mYsEcReTwOrD"; mw.Credentials = new NetworkCredential(username, password); try{ // Space3Pqc3yUo00Y0 Post post = new Post(); post.categories = new string[]{"Test Posts"}; post.title = "Tets 3"; post.description = "This is my 3rd test post"; post.dateCreated = DateTime.Now; string id = mw.newPost("MyBlog", username, password, post, true); post.title = "Test 3 (typo fixed)"; mw.editPost(id, username, password, post, true); post = mw.getPost(id, username, password); Console.WriteLine("Just edited the post with the title '{0}' at '{1}'", post.title, post.dateCreated); /* display list of categories used on the blog */ Category[] categories = mw.getCategories("MyBlog", username, password); foreach(Category c in categories){ Console.WriteLine("Category: {0}", c.description); } /* display title of the ten most recent posts */ Post[] posts = mw.getRecentPosts("MyBlog", username, password, 10); foreach(Post p in posts){ Console.WriteLine("Post Title: {0}", p.title); } mw.deletePost(String.Empty, id, username, password, true); Console.WriteLine("The post entitled '{0}' has been deleted", post.title); /* get info on user's blogs */ UserBlog[] blogs = mw.getUsersBlogs(String.Empty, username, password); foreach(UserBlog b in blogs){ Console.WriteLine("The URL of '{0}' is {1}", b.blogName, b.url); } /* get info on the user */ UserInfo user = mw.getUserInfo(String.Empty, username, password); Console.WriteLine("{0} {1} ({2}) is the owner of the space whose URL is {3}", user.firstname, user.lastname, user.email, user.url); }catch(XmlRpcFaultException xrfe){ Console.WriteLine("ERROR: {0}", xrfe.FaultString); } Console.ReadLine(); } } }
[출처] https://msdn.microsoft.com/ko-kr/library/aa905670.aspx
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.