Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

swift error "Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 1."

I am having trouble fixing this error message on my Swift Alamofire POST request (to login a user).

'3840' "Invalid value around character 1."

I have imported Foundation, Alamofire, SwiftyJson. There are no authorisation restrictions (no Oauth etc). I'm also getting the same error message when I change the Post (eg to another endpoint, with other parameters and values) but keep the rest of the code/format the same. On my drupal7 REST server 'definitions' it lists the endpoint as /rest/user/login and parameters as 'username' and 'password' strings as I've used.

I'd really appreciate any tips and help?

error calling REQUEST Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 1." UserInfo={NSDebugDescription=Invalid value around character 1.}

This is my code

 @IBAction func loginButtonTapped(sender: AnyObject) {

    //using Alamofire

    let dataEndpoint: String = "https://www.example.com/rest/user/login"
    let newData = ["username":"Mickey", "password":"123"]
    Alamofire.request(.POST, dataEndpoint, parameters: newData, encoding: .JSON)
        .responseJSON { response in
            guard response.result.error == nil else {
                // got an error in posting the data, need to handle it
                print("error calling REQUEST")
                print(response.result.error!)
                return
            }

            guard let value = response.result.value else {
                print("no result data  when calling request")
                return
            }
            let data = JSON(value)
            print("The result is: " + data.description)
    }

}

Thank you

like image 511
Dimitri T Avatar asked May 03 '16 06:05

Dimitri T


3 Answers

This is an error stating that the response from the server is not valid JSON and contains unreadable characters (e.g. html) Basically it means that your upload did not go well (not accepted by server and therefore not showing json response) or that you did not setup the json response correctly and that it contains html. You can check the latter by looking at the page in your browser and checking the source.

Hope this helps!

Ps: I assume you are using a working URL in your real code right? ;-)

like image 155
Robski18 Avatar answered Nov 03 '22 10:11

Robski18


Adding .json at the end of the URL endpoint has solved the error. ie https://www.example.com/rest/user/login.json

like image 34
Dimitri T Avatar answered Nov 03 '22 10:11

Dimitri T


I got this error when the problem was actually an import error in django on the server side. By following tcp stream in wireshark I got this:

'ImportError': <type 'exceptions.ImportError'>,

like image 42
DevB2F Avatar answered Nov 03 '22 09:11

DevB2F