Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用字符串发送post请求_Ios_Xcode_Https_Swift - Fatal编程技术网

Ios 使用字符串发送post请求

Ios 使用字符串发送post请求,ios,xcode,https,swift,Ios,Xcode,Https,Swift,我无法向服务器发送包含字符串的swift post请求。服务器不接受JSON数据。苹果图书馆里有什么方法吗?我找不到 或者你能告诉我怎么写这样的方法吗 let url = NSURL(string: "myUrl") var session = NSURLSession.sharedSession() let request = NSMutableURLRequest(URL: url) request.HTTPMethod = "POST" var params = "login_ac

我无法向服务器发送包含字符串的swift post请求。服务器不接受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)")

感谢您的帮助

使用Alamofire与Swift进行HTTP联网可能会更好


使用Alamofire与Swift进行HTTP联网可能会更好


如果服务器不接受json,那么将标题内容类型设置为application/json的目的是什么。您有两个选项,或者将内容作为json发送,或者将post请求作为表单提交发送。我会告诉你两种可能的方法

第一种方法只是将表单参数发布到url,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)")
})

如果服务器不接受json,那么将头内容类型设置为application/json的目的是什么。您有两个选项,或者将内容作为json发送,或者将post请求作为表单提交发送。我会告诉你两种可能的方法

第一种方法只是将表单参数发布到url,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)")
})

我需要利用你的第一个建议。但是参数不包括在您的请求中。我该怎么做?我需要利用你的第一个建议。但是参数不包括在您的请求中。我该怎么做?