Diego Charles
Diego Charles

Reputation: 113

Swift: The JSON seems alright, but I'm still getting Cocoa error 3840

I'm trying to connect into a webservice, making a post call. The JSON outputed is ok, according with jsonlint.com. The request is not being completed as I can see on my WS logs.

func create() -> Bool {
        var error: NSError?
        var url: NSURL = NSURL(fileURLWithPath: "\(WSUrl)/profiles.json")!
        var successedOperation: Bool = false

        var request: NSMutableURLRequest = NSMutableURLRequest(URL: url)
        request.HTTPMethod = "post"
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue("application/json", forHTTPHeaderField: "Accept")

        var dataToJSON = "{\"profiles\":{\"email\":\"\(self.email)\",\"password\":\"\(self.password)\",\"password_confirmation\":\"\(self.passwordConfirmation)\",\"username\": \"\(self.username)\",\"age\": \"\(self.age)\",\"gender\":\"\(self.gender)\"}}"

        println(dataToJSON)

        request.HTTPBody = dataToJSON.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)

        let config = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: config)

        var task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
            println("Response: \(response)")
            var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
            println("Body: \(strData)")
            var error: NSError?
            var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &error) as? NSDictionary

            if error != nil {
                println(error?.localizedDescription)
                let jsonString = NSString(data: data, encoding: NSUTF8StringEncoding)
                println("Error: \(jsonString)")
            } else {
                if let parseJSON = json {
                    var success = parseJSON
                    println("Success: \(success)")
                } else {
                    let jsonString = NSString(data: data, encoding: NSUTF8StringEncoding)
                    println("Error could not parse JSON: \(jsonString)")
                }
            }

        })

        task.resume()

        return successedOperation

    }

The JSON outputed is alright:

{"profiles":{"email":"diegocharles@diegocharles.com","password":"abc1234","password_confirmation":"abc1234","username": "diegocharles","age": "18","gender":"Male"}}

And the error printed

"The operation couldn’t be completed. (Cocoa error 3840.)"

Upvotes: 0

Views: 907

Answers (1)

Cezar
Cezar

Reputation: 56372

fileURL(withPath:) is used to create an URL for a file on disk. What you're looking for is URL(string:).

Upvotes: 1

Related Questions