In my iPhone application (being developed in SWIFT), I need to communicate with the https service (with parameters) and analyze the response.
Everything works fine, but in some cases notices that it does NOT get the expected result ... Further analysis, I found a problem with converting server data to string (NSData → NSString) ...
1). When I use UTF8 Encoding, I get null as a converted String (responseString)
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
2). But with ASCII, the encoding is fine (gets the correct response server)
let responseString = NSString(data: data, encoding: NSASCIIStringEncoding)
Below is a complete example of the code I'm trying ...
let myUrl = NSURL(string: "https://myurl.com/myservice.asp")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
request.timeoutInterval = 55.0
let postString = "paramone=\(para1)¶mtwo=\(para2)¶mthree=\(para3)"
// NOTE: Works ok with ASCII AND UTF8 both encoding types at this point...
// request.HTTPBody = postString.dataUsingEncoding(NSASCIIStringEncoding)
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
if (error != nil)
{
println("Error: \(error)")
println("Description: \(error.description)")
println("Domain : \(error.domain)")
println("Error code : \(error.code)")
}
else
{
//???? => ENCODING PROBLEM
// let responseString = NSString(data: data, encoding: NSASCIIStringEncoding)
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Response: \(responseString)")
}
}
task.resume()
POSTS, ... , ASCII, UTF8...
, "" ASCII ( "" ASCII), UTF8.
, - ... .