2014-08-27 74 views
1

我还没有能够发送一个迅速的post-request到一个接受字符串的服务器。服务器不接受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)") 

任何帮助表示赞赏!

回答

3

如果服务器不接受JSON那么什么是设置页眉内容类型应用程序/ 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)") 
}) 
+0

我需要使用你的第一个建议。但这些参数不包含在您的请求中。我怎么做? – 2014-10-05 20:33:50

+0

请参阅我的编辑。 – Sandeep 2014-10-06 08:35:06

相关问题