by Mads Kristensen via .NET Slave on 8/1/2007 4:17:00 PM
Many blogs have the ability to ping different ping-services, such as Ping-o-Matic, Feedburner and Technorati, whenever some content is created or updated. But it is not only blogs who can benefit from pinging these services. Almost all websites that is updated regularly can use this technique.
All these services use XML-RPC and the exact same format, so you can write a ping class ones and then just add whatever ping service URL later. I’ve written a very simple static ping class that can be used in any ASP.NET application.
Here is the the three methods needed to send XML-RPC pings.
/// <summary> /// Sends a ping to various ping services. /// </summary> public static void Send() { Execute("http://ping.feedburner.com"); Execute("http://rpc.pingomatic.com/RPC2"); }
/// <summary> /// Creates a web request and with the RPC-XML code in the stream. /// </summary> private static void Execute(string url) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "text/xml"; request.Timeout = 3000;
AddXmlToRequest(request); request.GetResponse(); } catch (Exception) { // Log the error. } }
/// <summary> /// Adds the XML to web request. The XML is the standard /// XML used by RPC-XML requests. /// </summary> private static void AddXmlToRequest(HttpWebRequest request) { Stream stream = (Stream)request.GetRequestStream(); using (XmlTextWriter writer = new XmlTextWriter(stream, Encoding.ASCII)) { writer.WriteStartDocument(); writer.WriteStartElement("methodCall"); writer.WriteElementString("methodName", "weblogUpdates.ping"); writer.WriteStartElement("params"); writer.WriteStartElement("param"); // Add the name of your website here writer.WriteElementString("value", "The name of your website"); writer.WriteEndElement(); writer.WriteStartElement("param"); // The absolute URL of your website - not the updated or new page writer.WriteElementString("value", "http://www.example.com"); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndElement(); } }
Download the class below and drop it into the App_Code folder or a class library. Then from anywhere in your ASP.NET project you can use the class by calling the Send method like so:
PingService.Send();
Because it can take some time to ping all the different services, you might want to consider doing it asynchronously. Here is how to do that. That’s it. Now you have a class that pings various services using XML-RPC. You can find a full list of available ping services here.
PingService.zip (816 bytes)
Original Post: Ping using XML-RPC in ASP.NET
The content of the postings is owned by the respective author. CSharpFeeds is not responsible for the contents of the postings. This site is automatically generated and cannot be reviewed for abusive content. If you find abusive content on CSharpFeeds, please contact us. Designated trademarks and brands are the property of their respective owners. All rights reserved.