ios - 发送带有字符串的后请求

标签 ios xcode https swift

我无法向采用字符串的服务器发送快速后请求。服务器不接受 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/

相关文章:

android - 不调用 Facebook 取消授权回调

ios - UIView 与 CAShapeLayer 的用法(绘图、动画、用户交互)

ios - Django 和 iOS 中的 CSRF token

iphone - dealloc 方法在基于 ios5 的项目中默认不存在

java - 将 "jsse.enableSNIExtension"设置为 false 的安全后果是什么?

java - Mule - 出站端点消息负载异常为 : byte[] 类型

ios - 访问其他类中的变量

iOS - Diceroll 增加一个对象的出现频率

ios - 具有多个文本字段的 NS 谓词

objective-c - 以编程方式编辑 Info.plist 可能吗?