问题
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
回答1:
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? ;-)
回答2:
Adding .json at the end of the URL endpoint has solved the error. ie https://www.example.com/rest/user/login.json
回答3:
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'>,
回答4:
I believe error "3840 Invalid value around character 1" is also 404 Page Not Found error
Meaning Alamofire did not actually connect to the server side.
Remember this guidelines:
- Double or should I say Triple check your URL endpoints.
- Also check if you are using the right parameter encoding.
- I suggest you create your Alamofire Router for your API requests. (https://github.com/Alamofire/Alamofire#crud--authorization)
来源:https://stackoverflow.com/questions/36997007/swift-error-domain-nscocoaerrordomain-code-3840-invalid-value-around-character