【问题标题】:Sending custom HTTP headers in swift快速发送自定义 HTTP 标头
【发布时间】:2015-09-25 16:21:20
【问题描述】:

我设法从我的服务器获取 json,但现在我想通过 http 标头添加额外的安全性。这就是我的代码现在几乎看起来的样子:

let urlPath = "http://www.xxxxxxxx.com"
        let url = NSURL(string: urlPath)
        let session = NSURLSession.sharedSession()
        let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
            if ((error) != nil) {
                println("Error")
            } else {
                // process json
                let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary

                println(jsonResult["user"])
            }
        })

我要添加到此请求的标头如下:

  • uid,保存一个整数值
  • 哈希,是一个字符串

如果有帮助,我有另一个内置 Titanium 框架的应用程序,它使用这种语法:

xhr.setRequestHeader('uid', userid);
xhr.setRequestHeader('hash', hash);

所以,我基本上是在寻找一个 Swift 等价物。

【问题讨论】:

  • @Abizern 这个问题怎么可能与这个问题重复?那个是针对objective-c的不是吗?
  • @WilliamKinaan 答案是 Swift 并回答了这个问题。
  • @Abizern 这没有任何意义。我在 Jave 中提问,而 Python 中出现了一个问题。 POOM 接受了答案
  • 请检查我的答案了吗?

标签: json swift


【解决方案1】:

您正在使用dataTaskWithURL,而您应该使用dataTaskWithRequest,它将NSMutableURLRequest 对象作为输入。使用此对象,您可以设置 HTTP 标头、HTTPBody 或 HTTPMethod

        let urlPath = "http://www.xxxxxxxx.com"
        let url = NSURL(string: urlPath)
        let session = NSURLSession.sharedSession()
        let request = NSMutableURLRequest(URL: url!)
        request.HTTPMethod = "GET" // make it post if you want
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")//This is just an example, put the Content-Type that suites you
        //request.addValue(userid, forHTTPHeaderField: "uid")
        //request.addValue(hash, forHTTPHeaderField: "hash")
        let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
          //do anything you want
        })
        task.resume()

【讨论】:

    【解决方案2】:

    我建议你使用 Alamofire 进行联网 https://github.com/Alamofire/Alamofire

    它是用 Swift 编写的,而且非常易于使用。看看那个页面。

    【讨论】:

    • 其实我看不到你评论的原因。没说它更强大,我只是觉得它更容易使用,所以我建议使用它。
    • 我评论的原因是什么?顺便说一句,投反对票的不是我,我正在查看图书馆,这很好,但我总是更喜欢使用原生
    • 这是一个很酷的库,受到社区的大力支持。下次需要网络时试试看?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2016-04-29
    相关资源
    最近更新 更多