我无法向采用字符串的服务器发送快速后请求。服务器不接受 JSON 数据。苹果图书馆有什么方法吗?我找不到。
或者您甚至可以告诉我如何编写这样的方法来帮助我吗?
let url = NSURL(string: "myUrl")
var session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
var params = "login_act:'myUsername'&login_pwd:'myPassword'"
var err: NSError?
request.HTTPBody = NSJSONReadingOptions.
// The following method call does not accept the params variable type, although I need to send a String
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
println("Response: \(response)")
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Body: \(strData)")
感谢任何帮助!!!
最佳答案
如果服务器不接受 json 那么将 header Content-Type 设置为 application/json 的目的是什么。您有两种选择,要么将内容作为 json 发送,要么将发布请求作为表单提交发送。我将向您展示这两种可能的方法,
第一个是简单地将表单参数发送到 url,它不接受 json,而是接受 url 编码的表单参数。
let url = NSURL(string: "myUrl")
var session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
var params = "login_act=myUsername&login_pwd=myPassword"
request.HTTPBody = params.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
var err: NSError?
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
println("Response: \(response)")
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Body: \(strData)")
})
其他方法,如果你的服务器接受json参数,那么这个方法和你做的很相似。
let url = NSURL(string: "myUrl")
var session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
var params = ["login_act":"myUsername", "login_pwd":"myPassword"]
var err: NSError?
// The following method call does not accept the params variable type, although I need to send a String
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
println("Response: \(response)")
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Body: \(strData)")
})
关于ios - 发送带有字符串的后请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25535936/