DoboWiki
Top
> .NETプログラミング研究/74 をテンプレートにして作成
.NETプログラミング研究/74 をテンプレートにして作成
開始行:
#title(XML-RPCを使ったWebサービスにアクセスする)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第74号 [#q8960d7b]
**.NET Tips [#xd9d44ce]
**XML-RPCを使ったWebサービスにアクセスする [#v9fa81fa]
今回はXML-RPCによるWebサービスにアクセスする方法について...
-[[XML-RPC 仕様書>http://lowlife.jp/yasusii/stories/9.htm...
現在公に公開されているWebサービスでは、XML-RPCを使用した...
-[[Weblogs.Com XML-RPC interface>http://www.xmlrpc.com/we...
そこでここでは、XML-RPCクライアントを作成する例として、Bl...
***Blogger APIを使う [#z8c18df0]
前述した通り、Blogger APIは、ブログへの投稿や、記事の更新...
-[[Movable Type 3.3 マニュアル - XML-RPC API>http://www.s...
-[[MovableType で使える XML-RPC API>http://www.na.rim.or....
早速ですが、Blogger APIを使用する具体例として、blogger.ge...
#code(vbnet){{
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click( _
ByVal sender As Object, ByVal e As System.EventAr...
'リクエストURL
Dim requestUrl As String = _
"http://localhost/mt/mt-xmlrpc.cgi"
'メソッド名
Dim methodName As String = "blogger.getRecentPosts"
'ブログのID
Dim blogID As String = "1"
'ユーザー名とパスワード
Dim userName As String = "username"
Dim password As String = "password"
'取得する投稿の数
Dim numberOfPosts As Integer = 1
'POST送信するXMLを作成
Dim postData As String = "<?xml version=""1.0""?>...
+ "<methodCall>" _
+ "<methodName>{0}</methodName>" _
+ "<params>" _
+ "<param><value><string>{1}</string></value>...
+ "<param><value><string>{2}</string></value>...
+ "<param><value><string>{3}</string></value>...
+ "<param><value><string>{4}</string></value>...
+ "<param><value><i4>{5}</i4></value></param>...
+ "</params>" _
+ "</methodCall>"
postData = String.Format(postData, _
methodName, _
"", _
blogID, _
userName, _
password, _
numberOfPosts)
Dim postDataBytes As Byte() = _
System.Text.Encoding.UTF8.GetBytes(postData)
'HttpWebRequestの作成
Dim request As System.Net.HttpWebRequest = _
CType(System.Net.WebRequest.Create(requestUrl...
System.Net.HttpWebRequest)
'POST
request.Method = "POST"
request.ContentType = "text/xml"
request.ContentLength = postDataBytes.Length
Dim reqStream As System.IO.Stream = request.GetRe...
reqStream.Write(postDataBytes, 0, postDataBytes.L...
reqStream.Close()
Dim response As System.Net.HttpWebResponse = Noth...
Dim doc As New System.Xml.XmlDocument()
Try
'レスポンスの取得
response = CType(request.GetResponse(), _
System.Net.HttpWebResponse)
Dim strm As System.IO.Stream = response.GetRe...
'XmlDocumentに読込む
doc.Load(strm)
Catch ex As Exception
Label1.Text = "エラー:" + Server.HtmlEncode(...
Return
Finally
If Not (response Is Nothing) Then
response.Close()
End If
End Try
'結果を解析する
Dim paramsNode As System.Xml.XmlNode = _
doc.SelectSingleNode("/methodResponse/params")
If paramsNode Is Nothing Then
Label1.Text += "該当する投稿が見つかりません...
Return
End If
Dim node As System.Xml.XmlNode
For Each node In paramsNode.SelectNodes("//member")
If node.SelectSingleNode("name").InnerText = ...
Label1.Text += node.SelectSingleNode("val...
+ "<hr />"
End If
Next node
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Blogger APIのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="開始" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label></div>
</form>
</body>
</html>
}}
#code(csharp){{
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs...
{
//リクエストURL
string requestUrl =
"http://localhost/mt/mt-xmlrpc.cgi";
//メソッド名
string methodName = "blogger.getRecentPosts";
//ブログのID
string blogID = "1";
//ユーザー名とパスワード
string userName = "username";
string password = "password";
//取得する投稿の数
int numberOfPosts = 1;
//POST送信するXMLを作成
string postData = @"<?xml version=""1.0""?>
<methodCall>
<methodName>{0}</methodName>
<params>
<param>
<value>
<string>{1}</string>
</value>
</param>
<param>
<value>
<string>{2}</string>
</value>
</param>
<param>
<value>
<string>{3}</string>
</value>
</param>
<param>
<value>
<string>{4}</string>
</value>
</param>
<param>
<value>
<i4>{5}</i4>
</value>
</param>
</params>
</methodCall>";
postData = string.Format(postData,
methodName,
"",
blogID,
userName,
password,
numberOfPosts);
byte[] postDataBytes = System.Text.Encoding.UTF8....
//HttpWebRequestの作成
System.Net.HttpWebRequest request =
(System.Net.HttpWebRequest)System.Net.WebRequ...
requestUrl);
//POST
request.Method = "POST";
request.ContentType = "text/xml";
request.ContentLength = postDataBytes.Length;
System.IO.Stream reqStream = request.GetRequestSt...
reqStream.Write(postDataBytes, 0, postDataBytes.L...
reqStream.Close();
System.Net.HttpWebResponse response = null;
System.Xml.XmlDocument doc = new System.Xml.XmlDo...
try
{
//レスポンスの取得
response = (System.Net.HttpWebResponse)reques...
System.IO.Stream strm = response.GetResponseS...
//XmlDocumentに読込む
doc.Load(strm);
}
catch (Exception ex)
{
Label1.Text = "エラー:" + Server.HtmlEncode(...
return;
}
finally
{
if (response != null)
response.Close();
}
//結果を解析する
System.Xml.XmlNode paramsNode =
doc.SelectSingleNode("/methodResponse/params");
if (paramsNode == null)
{
Label1.Text += "該当する投稿が見つかりません...
return;
}
foreach (System.Xml.XmlNode node in
paramsNode.SelectNodes("//member"))
{
if (node.SelectSingleNode("name").InnerText =...
{
Label1.Text += node.SelectSingleNode("val...
+ "<hr />";
}
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Blogger APIのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="開始" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label></div>
</form>
</body>
</html>
}}
リクエストを送信するURLは、Movable Typeの場合、mtフォルダ...
***XML-RPC.NETを使用する [#z8ce0572]
上記の例はかなり手を抜きましたが、それでも結構大変です。...
-[[XML-RPC.NET>http://www.xml-rpc.net/]]
先と同じようにblogger.getRecentPostsメソッドを今度はXML-R...
まずはDLLをプロジェクトの参照に追加します。XML-RPC.NETに...
次に下に示すような構造体を宣言します。呼び出すメソッドの...
-[[XML-RPC.NET FAQ>http://www.xml-rpc.net/faq/xmlrpcnetfa...
#code(vbnet){{
Imports System
Namespace BloggerAPI
Public Structure Post
Public dateCreated As DateTime
Public userid As String
Public postid As String
Public content As String
End Structure
End Namespace
}}
#code(csharp){{
using System;
namespace BloggerAPI
{
public struct Post
{
public DateTime dateCreated;
public string userid;
public string postid;
public string content;
}
}
}}
次に、IXmlRpcProxyを継承した以下のようなインターフェイス...
#code(vbnet){{
Imports System
Imports CookComputing.XmlRpc
Namespace BloggerAPI
Public Interface IBlogger
Inherits IXmlRpcProxy
<XmlRpcMethod("blogger.getRecentPosts")> _
Function getRecentPosts( _
ByVal appkey As String, _
ByVal blogid As String, _
ByVal username As String, _
ByVal password As String, _
ByVal numberOfPosts As Integer) As Post()
End Interface
End Namespace
}}
#code(csharp){{
using System;
using CookComputing.XmlRpc;
namespace BloggerAPI
{
public interface IBlogger : IXmlRpcProxy
{
[XmlRpcMethod("blogger.getRecentPosts")]
Post[] getRecentPosts(
string appkey,
string blogid,
string username,
string password,
int numberOfPosts);
}
}
}}
ここまでできればあとは実に簡単です。XmlRpcProxyGen.Create...
#code(vbnet){{
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click( _
ByVal sender As Object, ByVal e As System.EventAr...
'プロキシクラスのインスタンスを作成
Dim proxy As BloggerAPI.IBlogger = _
CType(CookComputing.XmlRpc.XmlRpcProxyGen.Cre...
GetType(BloggerAPI.IBlogger)), BloggerAPI.IBl...
'URLを指定
proxy.Url = "http://localhost/mt/mt-xmlrpc.cgi"
Dim ps() As BloggerAPI.Post
Try
'blogger.getRecentPostsを呼び出す
ps = proxy.getRecentPosts("", "1", "username"...
Catch ex As Exception
Label1.Text = "エラー:" + Server.HtmlEncode(...
Return
End Try
'結果を表示する
If ps Is Nothing Or ps.Length = 0 Then
Label1.Text = "該当する投稿が見つかりませんで...
Return
End If
Label1.Text = ""
Label1.Text += "<ul>"
Dim p As BloggerAPI.Post
For Each p In ps
'contentを表示
Label1.Text += "<li>" + p.content
Next p
Label1.Text += "</ul>"
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Blogger APIのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="開始" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label></div>
</form>
</body>
</html>
}}
#code(csharp){{
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs...
{
//プロキシクラスのインスタンスを作成
BloggerAPI.IBlogger proxy = (BloggerAPI.IBlogger)
CookComputing.XmlRpc.XmlRpcProxyGen.Create(
typeof(BloggerAPI.IBlogger));
//URLを指定
proxy.Url = "http://localhost/mt/mt-xmlrpc.cgi";
BloggerAPI.Post[] ps;
try
{
//blogger.getRecentPostsを呼び出す
ps = proxy.getRecentPosts(
"",
"1",
"username",
"password",
1);
}
catch (Exception ex)
{
Label1.Text = "エラー:" + Server.HtmlEncode(...
return;
}
//結果を表示する
if (ps == null || ps.Length == 0)
{
Label1.Text = "該当する投稿が見つかりませんで...
return;
}
Label1.Text = "";
Label1.Text += "<ul>";
foreach (BloggerAPI.Post p in ps)
{
//contentを表示
Label1.Text += "<li>" + p.content;
}
Label1.Text += "</ul>";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Blogger APIのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="開始" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label></div>
</form>
</body>
</html>
}}
ちなみにCookComputing.XmlRpcV2.dllを使用する場合は、次の...
#code(vbnet){{
'プロキシクラスのインスタンスを作成
Dim proxy As BloggerAPI.IBlogger = _
CookComputing.XmlRpc.XmlRpcProxyGen.Create( _
Of BloggerAPI.IBlogger)()
}}
#code(csharp){{
//プロキシクラスのインスタンスを作成
BloggerAPI.IBlogger proxy =
CookComputing.XmlRpc.XmlRpcProxyGen.Create<BloggerAPI...
}}
**コメント [#bb82a49c]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2006-09-25 (月) 06:00:00,DOB...
終了行:
#title(XML-RPCを使ったWebサービスにアクセスする)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第74号 [#q8960d7b]
**.NET Tips [#xd9d44ce]
**XML-RPCを使ったWebサービスにアクセスする [#v9fa81fa]
今回はXML-RPCによるWebサービスにアクセスする方法について...
-[[XML-RPC 仕様書>http://lowlife.jp/yasusii/stories/9.htm...
現在公に公開されているWebサービスでは、XML-RPCを使用した...
-[[Weblogs.Com XML-RPC interface>http://www.xmlrpc.com/we...
そこでここでは、XML-RPCクライアントを作成する例として、Bl...
***Blogger APIを使う [#z8c18df0]
前述した通り、Blogger APIは、ブログへの投稿や、記事の更新...
-[[Movable Type 3.3 マニュアル - XML-RPC API>http://www.s...
-[[MovableType で使える XML-RPC API>http://www.na.rim.or....
早速ですが、Blogger APIを使用する具体例として、blogger.ge...
#code(vbnet){{
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click( _
ByVal sender As Object, ByVal e As System.EventAr...
'リクエストURL
Dim requestUrl As String = _
"http://localhost/mt/mt-xmlrpc.cgi"
'メソッド名
Dim methodName As String = "blogger.getRecentPosts"
'ブログのID
Dim blogID As String = "1"
'ユーザー名とパスワード
Dim userName As String = "username"
Dim password As String = "password"
'取得する投稿の数
Dim numberOfPosts As Integer = 1
'POST送信するXMLを作成
Dim postData As String = "<?xml version=""1.0""?>...
+ "<methodCall>" _
+ "<methodName>{0}</methodName>" _
+ "<params>" _
+ "<param><value><string>{1}</string></value>...
+ "<param><value><string>{2}</string></value>...
+ "<param><value><string>{3}</string></value>...
+ "<param><value><string>{4}</string></value>...
+ "<param><value><i4>{5}</i4></value></param>...
+ "</params>" _
+ "</methodCall>"
postData = String.Format(postData, _
methodName, _
"", _
blogID, _
userName, _
password, _
numberOfPosts)
Dim postDataBytes As Byte() = _
System.Text.Encoding.UTF8.GetBytes(postData)
'HttpWebRequestの作成
Dim request As System.Net.HttpWebRequest = _
CType(System.Net.WebRequest.Create(requestUrl...
System.Net.HttpWebRequest)
'POST
request.Method = "POST"
request.ContentType = "text/xml"
request.ContentLength = postDataBytes.Length
Dim reqStream As System.IO.Stream = request.GetRe...
reqStream.Write(postDataBytes, 0, postDataBytes.L...
reqStream.Close()
Dim response As System.Net.HttpWebResponse = Noth...
Dim doc As New System.Xml.XmlDocument()
Try
'レスポンスの取得
response = CType(request.GetResponse(), _
System.Net.HttpWebResponse)
Dim strm As System.IO.Stream = response.GetRe...
'XmlDocumentに読込む
doc.Load(strm)
Catch ex As Exception
Label1.Text = "エラー:" + Server.HtmlEncode(...
Return
Finally
If Not (response Is Nothing) Then
response.Close()
End If
End Try
'結果を解析する
Dim paramsNode As System.Xml.XmlNode = _
doc.SelectSingleNode("/methodResponse/params")
If paramsNode Is Nothing Then
Label1.Text += "該当する投稿が見つかりません...
Return
End If
Dim node As System.Xml.XmlNode
For Each node In paramsNode.SelectNodes("//member")
If node.SelectSingleNode("name").InnerText = ...
Label1.Text += node.SelectSingleNode("val...
+ "<hr />"
End If
Next node
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Blogger APIのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="開始" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label></div>
</form>
</body>
</html>
}}
#code(csharp){{
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs...
{
//リクエストURL
string requestUrl =
"http://localhost/mt/mt-xmlrpc.cgi";
//メソッド名
string methodName = "blogger.getRecentPosts";
//ブログのID
string blogID = "1";
//ユーザー名とパスワード
string userName = "username";
string password = "password";
//取得する投稿の数
int numberOfPosts = 1;
//POST送信するXMLを作成
string postData = @"<?xml version=""1.0""?>
<methodCall>
<methodName>{0}</methodName>
<params>
<param>
<value>
<string>{1}</string>
</value>
</param>
<param>
<value>
<string>{2}</string>
</value>
</param>
<param>
<value>
<string>{3}</string>
</value>
</param>
<param>
<value>
<string>{4}</string>
</value>
</param>
<param>
<value>
<i4>{5}</i4>
</value>
</param>
</params>
</methodCall>";
postData = string.Format(postData,
methodName,
"",
blogID,
userName,
password,
numberOfPosts);
byte[] postDataBytes = System.Text.Encoding.UTF8....
//HttpWebRequestの作成
System.Net.HttpWebRequest request =
(System.Net.HttpWebRequest)System.Net.WebRequ...
requestUrl);
//POST
request.Method = "POST";
request.ContentType = "text/xml";
request.ContentLength = postDataBytes.Length;
System.IO.Stream reqStream = request.GetRequestSt...
reqStream.Write(postDataBytes, 0, postDataBytes.L...
reqStream.Close();
System.Net.HttpWebResponse response = null;
System.Xml.XmlDocument doc = new System.Xml.XmlDo...
try
{
//レスポンスの取得
response = (System.Net.HttpWebResponse)reques...
System.IO.Stream strm = response.GetResponseS...
//XmlDocumentに読込む
doc.Load(strm);
}
catch (Exception ex)
{
Label1.Text = "エラー:" + Server.HtmlEncode(...
return;
}
finally
{
if (response != null)
response.Close();
}
//結果を解析する
System.Xml.XmlNode paramsNode =
doc.SelectSingleNode("/methodResponse/params");
if (paramsNode == null)
{
Label1.Text += "該当する投稿が見つかりません...
return;
}
foreach (System.Xml.XmlNode node in
paramsNode.SelectNodes("//member"))
{
if (node.SelectSingleNode("name").InnerText =...
{
Label1.Text += node.SelectSingleNode("val...
+ "<hr />";
}
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Blogger APIのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="開始" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label></div>
</form>
</body>
</html>
}}
リクエストを送信するURLは、Movable Typeの場合、mtフォルダ...
***XML-RPC.NETを使用する [#z8ce0572]
上記の例はかなり手を抜きましたが、それでも結構大変です。...
-[[XML-RPC.NET>http://www.xml-rpc.net/]]
先と同じようにblogger.getRecentPostsメソッドを今度はXML-R...
まずはDLLをプロジェクトの参照に追加します。XML-RPC.NETに...
次に下に示すような構造体を宣言します。呼び出すメソッドの...
-[[XML-RPC.NET FAQ>http://www.xml-rpc.net/faq/xmlrpcnetfa...
#code(vbnet){{
Imports System
Namespace BloggerAPI
Public Structure Post
Public dateCreated As DateTime
Public userid As String
Public postid As String
Public content As String
End Structure
End Namespace
}}
#code(csharp){{
using System;
namespace BloggerAPI
{
public struct Post
{
public DateTime dateCreated;
public string userid;
public string postid;
public string content;
}
}
}}
次に、IXmlRpcProxyを継承した以下のようなインターフェイス...
#code(vbnet){{
Imports System
Imports CookComputing.XmlRpc
Namespace BloggerAPI
Public Interface IBlogger
Inherits IXmlRpcProxy
<XmlRpcMethod("blogger.getRecentPosts")> _
Function getRecentPosts( _
ByVal appkey As String, _
ByVal blogid As String, _
ByVal username As String, _
ByVal password As String, _
ByVal numberOfPosts As Integer) As Post()
End Interface
End Namespace
}}
#code(csharp){{
using System;
using CookComputing.XmlRpc;
namespace BloggerAPI
{
public interface IBlogger : IXmlRpcProxy
{
[XmlRpcMethod("blogger.getRecentPosts")]
Post[] getRecentPosts(
string appkey,
string blogid,
string username,
string password,
int numberOfPosts);
}
}
}}
ここまでできればあとは実に簡単です。XmlRpcProxyGen.Create...
#code(vbnet){{
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click( _
ByVal sender As Object, ByVal e As System.EventAr...
'プロキシクラスのインスタンスを作成
Dim proxy As BloggerAPI.IBlogger = _
CType(CookComputing.XmlRpc.XmlRpcProxyGen.Cre...
GetType(BloggerAPI.IBlogger)), BloggerAPI.IBl...
'URLを指定
proxy.Url = "http://localhost/mt/mt-xmlrpc.cgi"
Dim ps() As BloggerAPI.Post
Try
'blogger.getRecentPostsを呼び出す
ps = proxy.getRecentPosts("", "1", "username"...
Catch ex As Exception
Label1.Text = "エラー:" + Server.HtmlEncode(...
Return
End Try
'結果を表示する
If ps Is Nothing Or ps.Length = 0 Then
Label1.Text = "該当する投稿が見つかりませんで...
Return
End If
Label1.Text = ""
Label1.Text += "<ul>"
Dim p As BloggerAPI.Post
For Each p In ps
'contentを表示
Label1.Text += "<li>" + p.content
Next p
Label1.Text += "</ul>"
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Blogger APIのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="開始" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label></div>
</form>
</body>
</html>
}}
#code(csharp){{
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional...
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs...
{
//プロキシクラスのインスタンスを作成
BloggerAPI.IBlogger proxy = (BloggerAPI.IBlogger)
CookComputing.XmlRpc.XmlRpcProxyGen.Create(
typeof(BloggerAPI.IBlogger));
//URLを指定
proxy.Url = "http://localhost/mt/mt-xmlrpc.cgi";
BloggerAPI.Post[] ps;
try
{
//blogger.getRecentPostsを呼び出す
ps = proxy.getRecentPosts(
"",
"1",
"username",
"password",
1);
}
catch (Exception ex)
{
Label1.Text = "エラー:" + Server.HtmlEncode(...
return;
}
//結果を表示する
if (ps == null || ps.Length == 0)
{
Label1.Text = "該当する投稿が見つかりませんで...
return;
}
Label1.Text = "";
Label1.Text += "<ul>";
foreach (BloggerAPI.Post p in ps)
{
//contentを表示
Label1.Text += "<li>" + p.content;
}
Label1.Text += "</ul>";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Blogger APIのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="開始" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label></div>
</form>
</body>
</html>
}}
ちなみにCookComputing.XmlRpcV2.dllを使用する場合は、次の...
#code(vbnet){{
'プロキシクラスのインスタンスを作成
Dim proxy As BloggerAPI.IBlogger = _
CookComputing.XmlRpc.XmlRpcProxyGen.Create( _
Of BloggerAPI.IBlogger)()
}}
#code(csharp){{
//プロキシクラスのインスタンスを作成
BloggerAPI.IBlogger proxy =
CookComputing.XmlRpc.XmlRpcProxyGen.Create<BloggerAPI...
}}
**コメント [#bb82a49c]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2006-09-25 (月) 06:00:00,DOB...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]