DoboWiki
Top
> .NETプログラミング研究/73 をテンプレートにして作成
.NETプログラミング研究/73 をテンプレートにして作成
開始行:
#title(RESTを使ったWebサービスにアクセスする)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第73号 [#w46bc3dc]
**.NET Tips [#f80975ad]
**RESTを使ったWebサービスにアクセスする [#r8c22c7c]
前回はSOAPを使ったWebサービスにアクセスする方法を紹介しま...
現在一般に公開されているWebサービスを調べてみると、RESTを...
注:「REST vs. SOAP at Amazon」によると、85%がRESTの使用...
-[[REST vs. SOAP at Amazon>http://www.oreillynet.com/pub/...
しかし、.NET FrameworkではSOAPほど簡単な方法が用意されて...
-[[Yahoo!デベロッパーネットワーク - ウェブ検索>http://dev...
RESTを使ったWebサービスにアクセスする流れを簡単にまとめる...
+Webサービスサーバーに送信するデータを作成する。
+データを指定されたURIにHTTPの適当なメソッド(GET、POST、...
+Webサービスサーバーから返されるXMLデータを受信する。
+受信したデータを解析する。
リクエストを送信し、レスポンスを受信する2、3の部分は、.NE...
-[[WebRequest、WebResponseクラスを使ってファイルをダウン...
4の受信したXMLデータを解析する方法は、幾つか考えられます...
***Yahoo!ウェブ検索Webサービスにアクセスする [#i1950fa0]
それではYahoo!ウェブ検索Webサービスにアクセスする方法を見...
-[[Yahoo!デベロッパーネットワーク - アプリケーションIDの...
''Xsd.exe''
まずはXsd.exeを使ってXMLデータを解析するのに役立つクラス...
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\X...
のようになるでしょう。
-[[XML スキーマ定義ツール (Xsd.exe)>http://msdn2.microsof...
Xsd.exeを使用するために、まずYahoo!ウェブ検索Webサービス...
-[[Yahoo!ウェブ検索Webサービス XMLスキーマ>http://api.sea...
そして次のようなコマンドを実行し、クラスを作成します。
xsd.exe /c /l:CS /n:Yahoo.jp.WebSearchResponse WebSearchR...
「/c」は指定したスキーマと対応するクラスを作成することを...
また「/l:CS」というのは、C#のコードを生成するという意味で...
さらに作成されるクラスの名前空間を「Yahoo.jp.WebSearchRes...
上記のコマンドを実行することにより、WebSearchResponse.xsd...
''クライアントアプリケーションの作成''
これで準備は整いましたので、Webサービスを使うクライアント...
さっそくですが、具体的なコードを紹介します。ここではフォ...
#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://api.search.yahoo.co.jp/WebSearchServi...
'アプリケーションIDを指定(必ず指定すること)
requestUrl += "?appid=xxxxxx"
'検索クエリー。UTF-8エンコードする。
requestUrl += "&query=" + Server.UrlEncode(TextBo...
'HttpWebRequestの作成
Dim request As System.Net.HttpWebRequest = _
CType(System.Net.WebRequest.Create(requestUrl...
System.Net.HttpWebRequest)
Dim response As System.Net.HttpWebResponse = Noth...
Dim res As Yahoo.jp.WebSearchResponse.ResultSet
Try
'レスポンスの取得
response = CType(request.GetResponse(), _
System.Net.HttpWebResponse)
Dim strm As System.IO.Stream = response.GetRe...
'サーバーから返されたXMLデータを解析
'xsd.exeで作成したクラスに逆シリアル化
Dim serializer As New System.Xml.Serializatio...
GetType(Yahoo.jp.WebSearchResponse.Result...
res = CType(serializer.Deserialize(strm), _
Yahoo.jp.WebSearchResponse.ResultSet)
Catch ex As Exception
Label1.Text = "エラー:" + Server.HtmlEncode(...
Return
Finally
If Not (response Is Nothing) Then
response.Close()
End If
End Try
'結果を表示
Label1.Text = ""
If res.totalResultsReturned = "0" Then
Label1.Text += "該当するページが見つかりませ...
Else
Label1.Text += "<b>" + _
Server.HtmlEncode(TextBox1.Text) + _
"</b> の検索結果 約 " + _
res.totalResultsAvailable + "件中 " + _
res.firstResultPosition + " - " + _
res.totalResultsReturned + " 件目<br />" ...
Label1.Text += "<ul>" + vbLf
Dim item As Yahoo.jp.WebSearchResponse.Result...
For Each item In res.Result
Label1.Text += "<li><a href=""" + _
item.ClickUrl + """>" + item.Title + ...
Next item
Label1.Text += "</ul>" + vbLf
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Yahoo!ウェブ検索Webサービスのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:T...
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="検索" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label>
</div>
</form>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet ...
<span style="margin:15px 15px 15px 15px">
<a href="http://developer.yahoo.co.jp/about">Webサービス ...
</span>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</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://api.search.yahoo.co.jp/WebSearchServi...
//アプリケーションIDを指定(必ず指定すること)
requestUrl += "?appid=xxxxxx";
//検索クエリー。UTF-8エンコードする。
requestUrl += "&query=" + Server.UrlEncode(TextBo...
//HttpWebRequestの作成
System.Net.HttpWebRequest request =
(System.Net.HttpWebRequest)System.Net.WebRequ...
requestUrl);
System.Net.HttpWebResponse response = null;
Yahoo.jp.WebSearchResponse.ResultSet res;
try
{
//レスポンスの取得
response = (System.Net.HttpWebResponse)reques...
System.IO.Stream strm = response.GetResponseS...
//サーバーから返されたXMLデータを解析
//xsd.exeで作成したクラスに逆シリアル化
System.Xml.Serialization.XmlSerializer serial...
new System.Xml.Serialization.XmlSerializer(
typeof(Yahoo.jp.WebSearchResponse.ResultS...
res = (Yahoo.jp.WebSearchResponse.ResultSet)
serializer.Deserialize(strm);
}
catch (Exception ex)
{
Label1.Text = "エラー:" + Server.HtmlEncode(...
return;
}
finally
{
if (response != null)
response.Close();
}
//結果を表示
Label1.Text = "";
if (res.totalResultsReturned == "0")
{
Label1.Text += "該当するページが見つかりませ...
}
else
{
Label1.Text += "<b>" + Server.HtmlEncode(Text...
"</b> の検索結果 約 " +
res.totalResultsAvailable + "件中 " +
res.firstResultPosition + " - " +
res.totalResultsReturned + " 件目<br />\n";
Label1.Text += "<ul>\n";
foreach (Yahoo.jp.WebSearchResponse.ResultTyp...
{
Label1.Text += "<li><a href=\"" + item.Cl...
item.Title + "</a>";
}
Label1.Text += "</ul>\n";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Yahoo!ウェブ検索Webサービスのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:T...
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="検索" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label>
</div>
</form>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet ...
<span style="margin:15px 15px 15px 15px">
<a href="http://developer.yahoo.co.jp/about">Webサービス ...
</span>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</body>
</html>
}}
Yahoo!ウェブ検索Webサービスではリクエストの送信にHTTP GET...
次にHttpWebRequestとHttpWebResponseクラスを使用してサーバ...
サーバーから返されたXMLデータは、XmlSerializer.Deserializ...
参考:
-[[[HOW TO] XML のシリアル化を使用してオブジェクトの読み...
''xsd.exeでDataSetから派生したクラスを作成した場合''
xsd.exeでクラスを作成するときに「/c」ではなく「/d」として...
この例は、[[自由区/Webサービス紹介/Yahoo!検索Webサービス/...
''XmlDocumentクラスでXMLデータを解析する''
xsd.exeで作成したクラスを使わずに、Webサービスが返したXML...
***Yahoo!ウェブ検索Webサービスの使い方 [#t53dce56]
Yahoo!ウェブ検索Webサービスの使い方をもう少し詳しく説明し...
-[[Yahoo!デベロッパーネットワーク - ウェブ検索>http://dev...
[[自由区/Webサービス紹介/Yahoo!検索Webサービス/ウェブ検索...
最後にYahoo!ウェブ検索Webサービスを使用する際の注意点を幾...
Yahoo!デベロッパーネットワークにはlanguageリクエストパラ...
また、Yahoo!のWebサービスを利用するすべてのサイトやアプリ...
Webサービスで検索した結果と、実際にYahoo! JAPANで検索した...
-[[Image Search Documentation for Yahoo! Search Web Servi...
ちなみにYahoo! JAPANのウェブ検索Webサービスでは検索結果を...
**コメント [#kcbbc1ab]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2006-09-09 (土) 06:00:00,DOB...
終了行:
#title(RESTを使ったWebサービスにアクセスする)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第73号 [#w46bc3dc]
**.NET Tips [#f80975ad]
**RESTを使ったWebサービスにアクセスする [#r8c22c7c]
前回はSOAPを使ったWebサービスにアクセスする方法を紹介しま...
現在一般に公開されているWebサービスを調べてみると、RESTを...
注:「REST vs. SOAP at Amazon」によると、85%がRESTの使用...
-[[REST vs. SOAP at Amazon>http://www.oreillynet.com/pub/...
しかし、.NET FrameworkではSOAPほど簡単な方法が用意されて...
-[[Yahoo!デベロッパーネットワーク - ウェブ検索>http://dev...
RESTを使ったWebサービスにアクセスする流れを簡単にまとめる...
+Webサービスサーバーに送信するデータを作成する。
+データを指定されたURIにHTTPの適当なメソッド(GET、POST、...
+Webサービスサーバーから返されるXMLデータを受信する。
+受信したデータを解析する。
リクエストを送信し、レスポンスを受信する2、3の部分は、.NE...
-[[WebRequest、WebResponseクラスを使ってファイルをダウン...
4の受信したXMLデータを解析する方法は、幾つか考えられます...
***Yahoo!ウェブ検索Webサービスにアクセスする [#i1950fa0]
それではYahoo!ウェブ検索Webサービスにアクセスする方法を見...
-[[Yahoo!デベロッパーネットワーク - アプリケーションIDの...
''Xsd.exe''
まずはXsd.exeを使ってXMLデータを解析するのに役立つクラス...
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\X...
のようになるでしょう。
-[[XML スキーマ定義ツール (Xsd.exe)>http://msdn2.microsof...
Xsd.exeを使用するために、まずYahoo!ウェブ検索Webサービス...
-[[Yahoo!ウェブ検索Webサービス XMLスキーマ>http://api.sea...
そして次のようなコマンドを実行し、クラスを作成します。
xsd.exe /c /l:CS /n:Yahoo.jp.WebSearchResponse WebSearchR...
「/c」は指定したスキーマと対応するクラスを作成することを...
また「/l:CS」というのは、C#のコードを生成するという意味で...
さらに作成されるクラスの名前空間を「Yahoo.jp.WebSearchRes...
上記のコマンドを実行することにより、WebSearchResponse.xsd...
''クライアントアプリケーションの作成''
これで準備は整いましたので、Webサービスを使うクライアント...
さっそくですが、具体的なコードを紹介します。ここではフォ...
#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://api.search.yahoo.co.jp/WebSearchServi...
'アプリケーションIDを指定(必ず指定すること)
requestUrl += "?appid=xxxxxx"
'検索クエリー。UTF-8エンコードする。
requestUrl += "&query=" + Server.UrlEncode(TextBo...
'HttpWebRequestの作成
Dim request As System.Net.HttpWebRequest = _
CType(System.Net.WebRequest.Create(requestUrl...
System.Net.HttpWebRequest)
Dim response As System.Net.HttpWebResponse = Noth...
Dim res As Yahoo.jp.WebSearchResponse.ResultSet
Try
'レスポンスの取得
response = CType(request.GetResponse(), _
System.Net.HttpWebResponse)
Dim strm As System.IO.Stream = response.GetRe...
'サーバーから返されたXMLデータを解析
'xsd.exeで作成したクラスに逆シリアル化
Dim serializer As New System.Xml.Serializatio...
GetType(Yahoo.jp.WebSearchResponse.Result...
res = CType(serializer.Deserialize(strm), _
Yahoo.jp.WebSearchResponse.ResultSet)
Catch ex As Exception
Label1.Text = "エラー:" + Server.HtmlEncode(...
Return
Finally
If Not (response Is Nothing) Then
response.Close()
End If
End Try
'結果を表示
Label1.Text = ""
If res.totalResultsReturned = "0" Then
Label1.Text += "該当するページが見つかりませ...
Else
Label1.Text += "<b>" + _
Server.HtmlEncode(TextBox1.Text) + _
"</b> の検索結果 約 " + _
res.totalResultsAvailable + "件中 " + _
res.firstResultPosition + " - " + _
res.totalResultsReturned + " 件目<br />" ...
Label1.Text += "<ul>" + vbLf
Dim item As Yahoo.jp.WebSearchResponse.Result...
For Each item In res.Result
Label1.Text += "<li><a href=""" + _
item.ClickUrl + """>" + item.Title + ...
Next item
Label1.Text += "</ul>" + vbLf
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Yahoo!ウェブ検索Webサービスのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:T...
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="検索" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label>
</div>
</form>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet ...
<span style="margin:15px 15px 15px 15px">
<a href="http://developer.yahoo.co.jp/about">Webサービス ...
</span>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</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://api.search.yahoo.co.jp/WebSearchServi...
//アプリケーションIDを指定(必ず指定すること)
requestUrl += "?appid=xxxxxx";
//検索クエリー。UTF-8エンコードする。
requestUrl += "&query=" + Server.UrlEncode(TextBo...
//HttpWebRequestの作成
System.Net.HttpWebRequest request =
(System.Net.HttpWebRequest)System.Net.WebRequ...
requestUrl);
System.Net.HttpWebResponse response = null;
Yahoo.jp.WebSearchResponse.ResultSet res;
try
{
//レスポンスの取得
response = (System.Net.HttpWebResponse)reques...
System.IO.Stream strm = response.GetResponseS...
//サーバーから返されたXMLデータを解析
//xsd.exeで作成したクラスに逆シリアル化
System.Xml.Serialization.XmlSerializer serial...
new System.Xml.Serialization.XmlSerializer(
typeof(Yahoo.jp.WebSearchResponse.ResultS...
res = (Yahoo.jp.WebSearchResponse.ResultSet)
serializer.Deserialize(strm);
}
catch (Exception ex)
{
Label1.Text = "エラー:" + Server.HtmlEncode(...
return;
}
finally
{
if (response != null)
response.Close();
}
//結果を表示
Label1.Text = "";
if (res.totalResultsReturned == "0")
{
Label1.Text += "該当するページが見つかりませ...
}
else
{
Label1.Text += "<b>" + Server.HtmlEncode(Text...
"</b> の検索結果 約 " +
res.totalResultsAvailable + "件中 " +
res.firstResultPosition + " - " +
res.totalResultsReturned + " 件目<br />\n";
Label1.Text += "<ul>\n";
foreach (Yahoo.jp.WebSearchResponse.ResultTyp...
{
Label1.Text += "<li><a href=\"" + item.Cl...
item.Title + "</a>";
}
Label1.Text += "</ul>\n";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Yahoo!ウェブ検索Webサービスのサンプル</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:T...
<asp:Button ID="Button1" runat="server"
OnClick="Button1_Click" Text="検索" /><br />
<br />
<asp:Label ID="Label1" runat="server"
EnableViewState="False"></asp:Label>
</div>
</form>
<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet ...
<span style="margin:15px 15px 15px 15px">
<a href="http://developer.yahoo.co.jp/about">Webサービス ...
</span>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</body>
</html>
}}
Yahoo!ウェブ検索Webサービスではリクエストの送信にHTTP GET...
次にHttpWebRequestとHttpWebResponseクラスを使用してサーバ...
サーバーから返されたXMLデータは、XmlSerializer.Deserializ...
参考:
-[[[HOW TO] XML のシリアル化を使用してオブジェクトの読み...
''xsd.exeでDataSetから派生したクラスを作成した場合''
xsd.exeでクラスを作成するときに「/c」ではなく「/d」として...
この例は、[[自由区/Webサービス紹介/Yahoo!検索Webサービス/...
''XmlDocumentクラスでXMLデータを解析する''
xsd.exeで作成したクラスを使わずに、Webサービスが返したXML...
***Yahoo!ウェブ検索Webサービスの使い方 [#t53dce56]
Yahoo!ウェブ検索Webサービスの使い方をもう少し詳しく説明し...
-[[Yahoo!デベロッパーネットワーク - ウェブ検索>http://dev...
[[自由区/Webサービス紹介/Yahoo!検索Webサービス/ウェブ検索...
最後にYahoo!ウェブ検索Webサービスを使用する際の注意点を幾...
Yahoo!デベロッパーネットワークにはlanguageリクエストパラ...
また、Yahoo!のWebサービスを利用するすべてのサイトやアプリ...
Webサービスで検索した結果と、実際にYahoo! JAPANで検索した...
-[[Image Search Documentation for Yahoo! Search Web Servi...
ちなみにYahoo! JAPANのウェブ検索Webサービスでは検索結果を...
**コメント [#kcbbc1ab]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2006-09-09 (土) 06:00:00,DOB...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]