SearchService.cs
using System;
using System.IO;
using System.Xml;
[
System.Web.Services.WebServiceBindingAttribute(
Name="SearchWebService",
Namespace="MRWebServices" )
]
public class SearchCaller : System.Web.Services.Protocols.SoapHttpClientProtocol
{
public SearchCaller()
{
this.Url = "http://fakeserver/MRcgi/MRWebServices.pl";
// Comment out if not using a proxy server.
//System.Net.IWebProxy proxyObject = new System.Net.WebProxy("http://localhost:8888/", false);
//this.Proxy = proxyObject;
}
[
System.Web.Services.Protocols.SoapDocumentMethodAttribute(
"MRWebServices#MRWebServices__search",
RequestNamespace="MRWebServices",
ResponseNamespace="MRWebServices",
Use=System.Web.Services.Description.SoapBindingUse.Encoded,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped )
]
[return: System.Xml.Serialization.SoapElementAttribute("return")]
public string MRWebServices__search(
string usr,
string pw,
string extraInfo,
string query
)
{
object[] results = this.Invoke(
"MRWebServices__search",
new object[] {usr, pw, extraInfo, query} );
return ((string)(results[0]));
}
}
class SearchService
{
private static string ParseXml( XmlReader reader )
{
string s = "";
while( reader.Read() )
{
switch( reader.NodeType )
{
case XmlNodeType.Element:
while( reader.MoveToNextAttribute() )
{
if( reader.Name == "key" && reader.Value == "mrtitle" )
{
reader.Read();
s += "<b>Title:</b>" + reader.Value + "<br>";
}
else if( reader.Name == "key" && reader.Value == "mrid" )
{
reader.Read();
s += "<b>Issue Number:</b>" + reader.Value + "<br>";
}
}
break;
}
}
return s;
}
public string search( string projid, string title )
{
System.IO.StringReader stream = null;
System.Xml.XmlTextReader reader = null;
try
{
SearchCaller search = new SearchCaller();
string result = search.MRWebServices__search(
"WebServices",
"fakepassword",
"RETURN_MODE => 'xml'",
"select mrID, mrTITLE from MASTER" + projid + " WHERE mrTITLE LIKE '%" + title + "%'" );
stream = new System.IO.StringReader( result );
reader = new System.Xml.XmlTextReader( stream );
return ParseXml( reader );
}
catch( Exception e )
{
throw e;
}
finally
{
if( reader != null )
{
reader.Close();
}
}
}
}
Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*