完全可自定义的 Google API Web 客户端





2.00/5 (9投票s)
2003年7月16日
3分钟阅读

76747

1373
一个基于Web的Google Web服务客户端,使用ASP.NET。
引言
这是Google Web服务的基于Web的客户端的演示。这是我第一次尝试ASP.NET技术。
我已尽力使其完全可定制且尽可能开放。
关键定制功能包括:
- 搜索结果的显示由XSL文件(search.xsl)控制。更改外观和感觉,并按您希望的方式自定义结果集。
- 应用程序在启动时从cfg.xml文件读取。它包含所有搜索查询参数以及一些应用程序特定的设置。例如,访问Google搜索数据库所需的密钥。您可以在附加的zip文件中找到此文件。
应用程序在当前工作目录中查找cfg.xml,默认情况下该目录为c:\winnt\system32。请将此文件复制到该位置。
这样做的好处是,可以根据需求变化随时更改搜索查询术语,结果显示也同样如此。
此应用程序允许用户查看前1000条结果,因为Google设置了此限制。
运行演示项目需要什么?
- Windows 2000上的IIS 5.0 / .NET Framework 1.0版。
- 必需:注册Google并获取您的个人许可证密钥。这是必须的。
- 必需:打开源文件中包含的cfg.xml,并填入
<key/>
、<ResultsPath/>
和<XslPath/>
的值。稍后将解释这些键...
应用程序的功能
步骤 1
应用程序向Google服务器发送SOAP消息,Google服务器返回Google专有数据结构。然后应用程序解析此数据结构并创建一个XML文件。(我们称之为results.xml。注意:只要在cfg.xml中指定,它可以是您选择的任何名称。)这是其中的一小部分
<SearchResults attributes1=value1... >
<ResultSet>
<Item>
<summary />
<url>http://www.iqsoft.com/</url>
<snippet>PRODUCTIONS </snippet>
<title>Welcome to SAWStudio.com!</title>
<cachedsize>9k</cachedsize>
<relatedInformationPresent>True</relatedInformationPresent>
<hostName />
<directorytitle />
</Item>
</ResultSet>
</SearchResults>
<SearchResults>
第二步
然后应用程序使用自定义样式表(search.xsl)转换此XML文件,并将转换结果写入客户端浏览器。
好的,这就是<ResultsPath/>
和<XslPath/>
键的含义。
<ResultsPath/>
是您希望应用程序将XML转储到的文件的完全限定路径。<XslPath />
是样式表(search.xsl)存储文件的完全限定路径。
源代码的关键区域
WebForm1.aspx.cs中的Search类
在WebForm1.aspx的代码隐藏文件中定义的Search
类(这是整个项目中唯一使用的Web窗体)包含核心函数dumpResultsasXml()
,该函数的作用与其名称一致。System.XmlTextWriter
负责写入。
Transform()
函数负责转换为HTML。我使用了一个MemoryStream
对象来读取转换结果,随后使用StreamReader
读取该内存并将其转换为字符串数据类型。
WebForm1.getdata
是实际执行操作的地方。可以在WebForm1.aspx中这样调用它:
<% Response.Write(getdata()) %>
关注点
Google Search Service对象只有一个实例,它在Application_Start()
中初始化。
尽管“下一页”和“上一页”链接可以由search.xsl文件生成,但除了像这样将其增加x
之外,我们无法在XSL中控制起始索引值:
<xsl:variable name="startindex" select="@currentIndex+10"/>
...依此类推。
但是XSL将无法感知我们当前所在的页。以下代码显示了它是如何实现的:
if( !Page.IsPostBack)
{
start = Request.Params["start"];
results = getdata(query,Convert.ToInt32(start));
}
else
results = getdata(query,0); //In this case start would always be 0.
跟踪是使用查询字符串参数start
完成的,向该参数添加或减去x
,以生成“下一页”和“上一页”链接的URL。在此示例中,x
= 10。最好将其作为cfg.xml中的一个设置,这样会更通用。嗯,也许在下一个版本中:)
这里有一个“下一页”链接的生成示例,其中start
是查询字符串参数start
的值。nTotalCount
是结果的总数。
if((nTotalCount - nNext) > 10)
{
Response.Write("<br></br><a href=\"webform1.aspx?type=Next&start=");
Response.Write(nNext);
Response.Write("&query=");
Response.Write(TextBox1.Text);
Response.Write("\"><b>Next</b></a><br></br>");
}
好了,希望我已经涵盖了关键区域。像任何其他程序一样,我确信其中会有错误和我的疏忽。期待您的反馈,以便我能根据您的建议进行改进和修复错误。