         logger.log(ILoggingLogLevel.DEBUG, category: loggerTag, message: "Removing all services from thee service pull")
         
         services.removeAll(keepCapacity: false)
+    }
+    
+    private func post(url : String, method: IServiceMethod, contentType: String, contentLenght: Int, content: NSInputStream, postCompleted : (succeeded: UInt, responseContent: NSString?, warning: IServiceResultCallbackWarning?, error: IServiceResultCallbackError?) -> ()) {
+        
+        // TODO: The type of the service is not used (Service.ServiceType)
+        // TODO: The Proxy parameter of the Endpoint is not used
+        // TODO: The headers parameters is not used
+        // TODO: The method atribute of the ServiceRequest is not used
+        // TODO: The protocol version of the Service Request is not used
+        // TODO: The raw content of the Service Request is not used
+        // TODO: The session attribute of Service Request is not used
+        
+        // Create and prepare the request and the sesion
+        var request = NSMutableURLRequest(URL: NSURL(string: url)!)
+        var session = NSURLSession.sharedSession()
+        
+        // Prepare the Service Request
+        let contentType: String = contentType != "" ? contentType : "application/json"
+        
+        var err: NSError?
+        request.HTTPBodyStream = content
+        request.addValue(contentType, forHTTPHeaderField: "Content-Type")
+        request.addValue(contentType, forHTTPHeaderField: "Accept")
+        request.addValue(String(contentLenght), forHTTPHeaderField: "Content-Length")
+        request.HTTPMethod = method == IServiceMethod.Post ? "POST" : "GET"
+        request.HTTPShouldUsePipelining = true
+        
+        
+        var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
+            
+            // Cast the response and the errors
+            let httpResponse: NSHTTPURLResponse = response as NSHTTPURLResponse
+            
+            let nsError: NSError? = error as NSError
+            
+            // There was an error on the data task
+            if(nsError != nil) {
+                
+                self.logger.log(ILoggingLogLevel.ERROR, category: self.loggerTag, message: "The call of the service is getting an error")
+                
+                postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Unreachable)
+            }
+            else {
+                
+                //Converting data to String
+                let responseText:NSString = NSString(data:data, encoding:NSUTF8StringEncoding)!
+                
+                // Check for Not secured url
+                if (url as NSString).containsString("https://") {
+                    self.logger.log(ILoggingLogLevel.DEBUG, category: self.loggerTag, message: "Secured URL (https): \(url)")
+                } else {
+                    self.logger.log(ILoggingLogLevel.WARN, category: self.loggerTag, message: "NOT Secured URL (https): \(url)")
+                    
+                    postCompleted(succeeded: 1, responseContent: responseText, warning: IServiceResultCallbackWarning.NotSecure, error: nil)
+                }
+                
+                self.logger.log(ILoggingLogLevel.DEBUG, category: self.loggerTag, message: "status code: \(httpResponse.statusCode)")
+                
+                switch (httpResponse.statusCode) {
+                case 200..<299:
+                    postCompleted(succeeded: 0, responseContent: responseText, warning: nil, error: nil)
+                case 300..<399:
+                    postCompleted(succeeded: 1, responseContent: responseText, warning: IServiceResultCallbackWarning.Redirected, error: nil)
+                case 400:
+                    postCompleted(succeeded: 1, responseContent: responseText, warning: IServiceResultCallbackWarning.Wrong_Params, error: nil)
+                case 401:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.NotAuthenticated)
+                case 403:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Forbidden)
+                case 404:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.NotFound)
+                case 405:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.MethodNotAllowed)
+                case 406:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.NotAllowed)
+                case 408:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.TimeOut)
+                case 444:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.NoResponse)
+                case 400..<499:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Unreachable)
+                case 500..<599:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Unreachable)
+                default:
+                    postCompleted(succeeded: 2, responseContent: nil, warning: nil, error: IServiceResultCallbackError.Unreachable)
+                    
+                }
+                
+            }
+        })
+        
+        // Start the task
+        task.resume()
     }
 
 }

       @since ARP1.0
    */
    public func invokeService(serviceRequest : ServiceRequest, service : Service, callback : IServiceResultCallback) {
        // TODO: Not implemented. Find the previous version without Alamofire
    }

    /**

            logger.log(ILoggingLogLevel.ERROR, category: loggerTag, message: "The service has no name. Impossible to add to the pull")
        } else {
            
            // Check if the service exists
            if service.isEqual(self.getService(service.getName())){
                logger.log(ILoggingLogLevel.WARN, category: loggerTag, message: "The service \(service.getName()!) is alredy on the pull, replacing...")
                self.unregisterService(service)
            }
            
            services.append(service)
            logger.log(ILoggingLogLevel.DEBUG, category: loggerTag, message: "Adding \(service.getName()!) to the service pull")
        }
