/* * public string GetATOMSearchResults(string searchTerm, int skip, int take) * { * string retVal = string.Empty; * * string url = String.Format(Settings.Default.SP2013RestUrl, HttpUtility.UrlEncode(searchTerm), Settings.Default.SP2013Properties); * * HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); * request.UseDefaultCredentials = true; * request.Method = "GET"; * request.Accept = "application/atom+xml"; * request.ContentType = "application/atom+xml;type=entry"; * HttpWebResponse response = (HttpWebResponse)request.GetResponse(); * // process response.. * XDocument oDataXML = XDocument.Load(response.GetResponseStream(), LoadOptions.None); * XNamespace atom = "http://www.w3.org/2005/Atom"; * XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices"; * XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; * List<XElement> items = oDataXML.Descendants(d + "query") * .Elements(d + "PrimaryQueryResult") * .Elements(d + "RelevantResults") * .Elements(d + "Table") * .Elements(d + "Rows") * .Elements(d + "element") * .ToList(); * * return retVal; * } */ public XmlDocument GetSearchResultsXML(String searchTerm, int skip, int take) { //SPQueryService.QueryService XmlDocument retDoc; using (var svc = new SPQueryService.QueryService()) { svc.UseDefaultCredentials = true; // get the query xml var queryXml = new StringBuilder(); var queryDoc = new XmlDocument(); // TODO: Move the XML to resource ? queryDoc.Load(XmlReader.Create(HttpContext.Current.Server.MapPath("~/Content/xml/SearchQuery.xml"))); queryXml.AppendFormat(queryDoc.OuterXml, searchTerm, skip + 1, take); var resp = svc.Query(queryXml.ToString()); // load the xml document retDoc = new XmlDocument(); retDoc.LoadXml(resp); // we need to add the number of records we expect to see in a row to the xml // get the range node var mgr = new XmlNamespaceManager(retDoc.NameTable); mgr.AddNamespace("resp", "urn:Microsoft.Search.Response"); var rangeNode = retDoc.SelectSingleNode("resp:ResponsePacket/resp:Response/resp:Range", mgr); var statusNode = retDoc.SelectSingleNode("resp:ResponsePacket/resp:Response/resp:Status", mgr); if (rangeNode == null) { if ((statusNode != null) && (statusNode.InnerText.ToLower().Contains("error"))) { // do nothing this can be because there are no results in the search } else { throw new Exception("There was an error getting search results from SharePoint"); } } else { var takeNode = retDoc.CreateElement("Take", "urn:Microsoft.Search.Response"); takeNode.InnerText = take.ToString(CultureInfo.InvariantCulture); rangeNode.AppendChild(takeNode); } } return(retDoc); }
public string GetSearchResultsString(String searchTerm, int skip, int take) { string retVal; using (var svc = new SPQueryService.QueryService()) { svc.UseDefaultCredentials = true; // get the query xml var queryXml = new StringBuilder(); var queryDoc = new XmlDocument(); queryDoc.Load(XmlReader.Create(@"/Content/xml/SearchQuery.xml")); queryXml.AppendFormat(queryDoc.OuterXml, searchTerm, skip + 1, take); // now execute the query retVal = svc.Query(queryXml.ToString()); } return(retVal); }
public string GetSearchResultsString(String searchTerm, int skip, int take) { string retVal; using (var svc = new SPQueryService.QueryService()) { svc.UseDefaultCredentials = true; // get the query xml var queryXml = new StringBuilder(); var queryDoc = new XmlDocument(); queryDoc.Load(XmlReader.Create(@"/Content/xml/SearchQuery.xml")); queryXml.AppendFormat(queryDoc.OuterXml, searchTerm, skip + 1, take); // now execute the query retVal = svc.Query(queryXml.ToString()); } return retVal; }
/* public string GetATOMSearchResults(string searchTerm, int skip, int take) { string retVal = string.Empty; string url = String.Format(Settings.Default.SP2013RestUrl, HttpUtility.UrlEncode(searchTerm), Settings.Default.SP2013Properties); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.UseDefaultCredentials = true; request.Method = "GET"; request.Accept = "application/atom+xml"; request.ContentType = "application/atom+xml;type=entry"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // process response.. XDocument oDataXML = XDocument.Load(response.GetResponseStream(), LoadOptions.None); XNamespace atom = "http://www.w3.org/2005/Atom"; XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices"; XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; List<XElement> items = oDataXML.Descendants(d + "query") .Elements(d + "PrimaryQueryResult") .Elements(d + "RelevantResults") .Elements(d + "Table") .Elements(d + "Rows") .Elements(d + "element") .ToList(); return retVal; } */ public XmlDocument GetSearchResultsXML(String searchTerm, int skip, int take) { //SPQueryService.QueryService XmlDocument retDoc; using (var svc = new SPQueryService.QueryService()) { svc.UseDefaultCredentials = true; // get the query xml var queryXml = new StringBuilder(); var queryDoc = new XmlDocument(); // TODO: Move the XML to resource ? queryDoc.Load(XmlReader.Create(HttpContext.Current.Server.MapPath("~/Content/xml/SearchQuery.xml"))); queryXml.AppendFormat(queryDoc.OuterXml, searchTerm, skip + 1, take); var resp = svc.Query(queryXml.ToString()); // load the xml document retDoc = new XmlDocument(); retDoc.LoadXml(resp); // we need to add the number of records we expect to see in a row to the xml // get the range node var mgr = new XmlNamespaceManager(retDoc.NameTable); mgr.AddNamespace("resp", "urn:Microsoft.Search.Response"); var rangeNode = retDoc.SelectSingleNode("resp:ResponsePacket/resp:Response/resp:Range", mgr); var statusNode = retDoc.SelectSingleNode("resp:ResponsePacket/resp:Response/resp:Status", mgr); if (rangeNode == null) { if ((statusNode != null) && (statusNode.InnerText.ToLower().Contains("error"))) { // do nothing this can be because there are no results in the search } else { throw new Exception("There was an error getting search results from SharePoint"); } } else { var takeNode = retDoc.CreateElement("Take", "urn:Microsoft.Search.Response"); takeNode.InnerText = take.ToString(CultureInfo.InvariantCulture); rangeNode.AppendChild(takeNode); } } return retDoc; }