MOSS中提供了很多web services的服务,都放在http://<Site>/_vti_bin下
我们可以在其他地方,比如winForm,webForm中调用,对MOSS的对象进行灵活操作。
下面我简单列一下调用一个MOSS中的搜索服务的方法:
1、在VS2005中加入Web引用,引用地址为http://<Site>/_vti_bin/Search.asmx
2、搜索代码如下:
using
System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
public partial class _Default:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
WebService.QueryServicequery=newWebService.QueryService();
StringBuildersbXml=newStringBuilder();
stringkeywordString="测试";
sbXml.Append("<QueryPacketxmlns='urn:Microsoft.Search.Query'>");
sbXml.Append("<Query>");
sbXml.Append("<SupportedFormats>");
sbXml.Append("<Formatrevision='1'>");
sbXml.Append("urn:Microsoft.Search.Response.Document:Document");
sbXml.Append("</Format>");
sbXml.Append("</SupportedFormats>");
sbXml.Append("<Context>");
//language可以设置成en-us等不同语言,type可以设成MSSQLFT,表示使用sql查询的格式
sbXml.Append("<QueryTextlanguage='zh-cn'type='STRING'>");
sbXml.Append(keywordString);
sbXml.Append("</QueryText>");
sbXml.Append("</Context>");
sbXml.Append("</Query>");
sbXml.Append("</QueryPacket>");
//Sharepoint服务默认情况下是关闭匿名访问的,可以使用此方式指定访问时的用户名和密码,
//如果在域里面也可以使用System.Net.NetworkCredentialcredentials=System.Net.CredentialCache.DefaultCredentials;
System.Net.NetworkCredentialcredentials=newSystem.Net.NetworkCredential("test","test1");
query.Credentials=credentials;
//返回xml格式的查询结果
stringaa=query.Query(sbXml.ToString());
//返回DataSet的查询结果
DataSetset=query.QueryEx(sbXml.ToString());
}
}
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
public partial class _Default:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
WebService.QueryServicequery=newWebService.QueryService();
StringBuildersbXml=newStringBuilder();
stringkeywordString="测试";
sbXml.Append("<QueryPacketxmlns='urn:Microsoft.Search.Query'>");
sbXml.Append("<Query>");
sbXml.Append("<SupportedFormats>");
sbXml.Append("<Formatrevision='1'>");
sbXml.Append("urn:Microsoft.Search.Response.Document:Document");
sbXml.Append("</Format>");
sbXml.Append("</SupportedFormats>");
sbXml.Append("<Context>");
//language可以设置成en-us等不同语言,type可以设成MSSQLFT,表示使用sql查询的格式
sbXml.Append("<QueryTextlanguage='zh-cn'type='STRING'>");
sbXml.Append(keywordString);
sbXml.Append("</QueryText>");
sbXml.Append("</Context>");
sbXml.Append("</Query>");
sbXml.Append("</QueryPacket>");
//Sharepoint服务默认情况下是关闭匿名访问的,可以使用此方式指定访问时的用户名和密码,
//如果在域里面也可以使用System.Net.NetworkCredentialcredentials=System.Net.CredentialCache.DefaultCredentials;
System.Net.NetworkCredentialcredentials=newSystem.Net.NetworkCredential("test","test1");
query.Credentials=credentials;
//返回xml格式的查询结果
stringaa=query.Query(sbXml.ToString());
//返回DataSet的查询结果
DataSetset=query.QueryEx(sbXml.ToString());
}
}
取得搜索结果就可以在客户端灵活显示了。