namespace Nwc.XmlRpc { using System; using System.Collections; using System.IO; using System.Xml; using System.Net; using System.Text; using System.Reflection; internal class AcceptAllCertificatePolicy : ICertificatePolicy { public AcceptAllCertificatePolicy() { } public bool CheckValidationResult(ServicePoint sPoint, System.Security.Cryptography.X509Certificates.X509Certificate cert, WebRequest wRequest,int certProb) { // Always accept return true; } } /// Class supporting the request side of an XML-RPC transaction. public class XmlRpcRequest { private String _methodName = null; private Encoding _encoding = new ASCIIEncoding(); private XmlRpcRequestSerializer _serializer = new XmlRpcRequestSerializer(); private XmlRpcResponseDeserializer _deserializer = new XmlRpcResponseDeserializer(); /// ArrayList containing the parameters. protected IList _params = null; /// Instantiate an XmlRpcRequest public XmlRpcRequest() { _params = new ArrayList(); } /// ArrayList conntaining the parameters for the request. public virtual IList Params { get { return _params; } } /// String conntaining the method name, both object and method, that the request will be sent to. public virtual String MethodName { get { return _methodName; } set { _methodName = value; } } /// Send the request to the server. /// String The url of the XML-RPC server. /// XmlRpcResponse The response generated. public XmlRpcResponse Send(String url) { // Override SSL authentication mechanisms ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); if (request == null) throw new XmlRpcException(XmlRpcErrorCodes.TRANSPORT_ERROR, XmlRpcErrorCodes.TRANSPORT_ERROR_MSG +": Could not create request with " + url); request.Method = "POST"; request.ContentType = "text/xml"; request.AllowWriteStreamBuffering = true; request.KeepAlive = false; request.Timeout = 15000; // miliseconds adjust as you see fit Stream stream = request.GetRequestStream(); XmlTextWriter xml = new XmlTextWriter(stream, _encoding); _serializer.Serialize(xml, this); xml.Flush(); xml.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader input = new StreamReader(response.GetResponseStream()); XmlRpcResponse resp = (XmlRpcResponse)_deserializer.Deserialize(input); input.Close(); response.Close(); return resp; } /// Produce String representation of the object. /// String representation of the object. override public String ToString() { return _serializer.Serialize(this); } } }