/// <summary> /// Executes a command /// </summary> /// <param name="commandToExecute">The command you wish to execute</param> /// <returns>A response from the browser</returns> public virtual Response Execute(Command commandToExecute) { if (commandToExecute == null) { throw new ArgumentNullException("commandToExecute", "commandToExecute cannot be null"); } CommandInfo info = this.commandInfoRepository.GetCommandInfo(commandToExecute.Name); HttpWebRequest request = info.CreateWebRequest(this.remoteServerUri, commandToExecute); request.Timeout = (int)this.serverResponseTimeout.TotalMilliseconds; request.Accept = RequestAcceptHeader; request.KeepAlive = this.enableKeepAlive; request.ServicePoint.ConnectionLimit = 2000; if (request.Method == CommandInfo.PostCommand) { string payload = commandToExecute.ParametersAsJsonString; byte[] data = Encoding.UTF8.GetBytes(payload); request.ContentType = ContentTypeHeader; Stream requestStream = request.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); } Response toReturn = this.CreateResponse(request); return(toReturn); }