Doe this page work properly? ubidots try it now!
I am trying to verify my HTTP Post structure and JSON packet structure that I am using in an iOS app.
I get “Access is denied error” when I try to update a variable. I believe I have tried every combination of token and App ID and variable ID but always the same error.
FWIW, we are uploading data from an android device using the Ubidots android sdk and that works fine.
Thanks for the report, the documentation is now working good.
Can you tell me a bit more about what are you sending in the request. For what I read, the error you are getting seem to be because there may be an error setting the token header in the iOS app.
First I was trying to form the request direct from swift. Posted below is what I believe to be the vital parts of that code…
But I switched to Alamofire which wraps those commands and that is working fine.
What appears to be happening to the native swift output is it gets auto formatted with an extraneous “/” in the POST line right before the “HTTP/1.1”. Looks something like: POST /api/v1.6/devices/57b4c96b7625422adf5379bf/xPosition/values/?token=wn****MC / HTTP/1.1
let json = [ "value":97 ]
let jsonData = try NSJSONSerialization.dataWithJSONObject(json, options: [])
let token = "wn*****************************MC"
let xLabel = "xPosition"
let dataSourceLabel = "iPhone"
let dataSourceId = "57b4c96b7625422adf5379bf"
let url = NSURL(string: "http://things.ubidots.com")!
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST /api/v1.6/devices/\(dataSourceLabel)/\(xLabel)/values/?token=\(token)"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.HTTPBody = jsonData
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in
if error != nil{
print("Error -> \(error)")
return
}
do {
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Response String: \(response)")
} catch {
print("Error -> \(error)")
}
}
task.resume()