*Search Web Services: Contextual Web Search サンプルコード(C#) [#c5c7d03a]
*Yahoo! Search Web Services: Contextual Web Search サンプルコード(C#) [#c5c7d03a]

以下のコードを実行するには、xsd.exeで生成されたクラスが必要です。これは[[../Web Searchコード(C#)]]に添付されているクラスと同じです。

#attach(noform)

#code(csharp){{
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Button1_Click(object sender, EventArgs e)
    {
        //URLを構築する
        string requestUrl =
            "http://api.search.yahoo.com/WebSearchService/V1/contextSearch";
        
        //POST送信する文字列を作成
        string postData = "";
        //アプリケーションIDを指定(必ず指定すること)
        postData += "appid=XXXXX";
        postData += "&query=" + Server.UrlEncode(TextBox1.Text);
        postData += "&context=" + Server.UrlEncode(TextBox2.Text);
        byte[] postDataBytes = System.Text.Encoding.ASCII.GetBytes(postData);

        //HttpWebRequestの作成
        System.Net.HttpWebRequest request =
            (System.Net.HttpWebRequest)System.Net.WebRequest.Create(
            requestUrl);
        //POST
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = postDataBytes.Length;
        System.IO.Stream reqStream = request.GetRequestStream();
        reqStream.Write(postDataBytes, 0, postDataBytes.Length);
        reqStream.Close();

        System.Net.HttpWebResponse response = null;
        Yahoo.us.WebSearchResponse.ResultSet res;
        try
        {
            //レスポンスの取得
            response = (System.Net.HttpWebResponse)request.GetResponse();
            System.IO.Stream strm = response.GetResponseStream();
            //サーバーから返されたXMLデータを解析
            //xsd.exeで作成したクラスに逆シリアル化
            System.Xml.Serialization.XmlSerializer serializer =
                new System.Xml.Serialization.XmlSerializer(
                typeof(Yahoo.us.WebSearchResponse.ResultSet));
            res = (Yahoo.us.WebSearchResponse.ResultSet)
                serializer.Deserialize(strm);
        }
        catch (Exception ex)
        {
            Label1.Text = "エラー:" + Server.HtmlEncode(ex.Message);
            return;
        }
        finally
        {
            if (response != null)
                response.Close();
        }

        //結果を表示
        Label1.Text = "";
        if (res.totalResultsReturned == "0")
        {
            Label1.Text += "該当するページが見つかりませんでした。";
        }
        else
        {
            Label1.Text += "<ul>\n";
            foreach (Yahoo.us.WebSearchResponse.ResultType item in res.Result)
            {
                Label1.Text += "<li><a href=\"" + item.ClickUrl + "\">" +
                    item.Title + "</a>";
            }
            Label1.Text += "</ul>\n";
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Yahoo! Search Web Services: Contextual Web Search サンプル</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server"
         OnClick="Button1_Click" Text="送信" /><br />
        <asp:TextBox ID="TextBox2" runat="server"
         Height="85px" TextMode="MultiLine"></asp:TextBox><br />
        <br />
        <asp:Label ID="Label1" runat="server" EnableViewState="False">
        </asp:Label></div>
    </form>

<!-- Begin Yahoo Web Services HTML Attribution Snippet -->
<a href="http://developer.yahoo.net/about/">
Web Services by Yahoo!
</a>
<!-- End Yahoo Web Services HTML Attribution Snippet -->
</body>
</html>
}}

//これより下は編集しないでください
#pageinfo(,2006-09-12 (火) 01:54:58,DOBON!,2006-09-12 (火) 01:57:06,DOBON!)
#pageinfo(,2006-09-12 (火) 01:54:58,DOBON!,2006-09-12 (火) 02:32:47,DOBON!)
[ トップ ]   [ 編集 | 差分 | バックアップ | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]