【问题标题】:Swift HTTP Post: Why are these params not being recognized?Swift HTTP Post:为什么无法识别这些参数?
【发布时间】:2014-12-30 20:32:17
【问题描述】:

我正在对 Swift 中的网络服务器进行简单的 HTTP Post 调用,并尝试通过字典传递几个参数,但服务器似乎没有接收到它们,我在这里缺少什么?我可以在 PHP、Perl 等中做到这一点,但还没有完全弄清楚在 Swift 中传递 POST 参数。谢谢。

var ret: NSData
var responseStr: NSString

var urlString = server + page
var url:NSURL = NSURL(string: urlString)!     // Creating URL
var request = NSMutableURLRequest(URL: url)   // Creating Http Request
request.HTTPMethod = "POST"

// these params don't seem to be recognized
let params = [
    "projectid": "1234", "userid": "somename", "password": "pw"
] as Dictionary<String, String>

var err: NSError?
let requestBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
request.HTTPBody = requestBody

var response: AutoreleasingUnsafeMutablePointer<NSURLResponse?> = nil
var error: NSErrorPointer? = nil

【问题讨论】:

    标签: swift nsurl


    【解决方案1】:

    服务器端应用程序通常需要一个值为 application/jsonContent-Type 标头来识别 JSON 格式的请求正文。所以在你提出请求之前添加这个:

    request.addValue("application/json", forHTTPHeaderField:"Content-Type")
    

    另一个解决方案是使用像 Just 这样的库。您的要求是:

    Just.post(urlString, json: ["projectid": "1234", "userid": "somename", "password": "pw"])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 2016-09-06
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多