如何在没有“键值”对格式的情况下快速发送 json 对象

Posted

技术标签:

【中文标题】如何在没有“键值”对格式的情况下快速发送 json 对象【英文标题】:How to send json object in swift without "key - value" pair format 【发布时间】:2015-03-04 03:51:34 【问题描述】:

嘿,所以我必须向 Django 服务器发送一个令牌字符串,它只接受一个字符串。我正在尝试使用 alamo fire 来执行此操作,但是我无法发送键值对来解决此问题。是否有替代解决方案。我是新的 ios 开发人员,这是我的第一个项目,也是社区的新手。谢谢。

【问题讨论】:

您能详细说明您需要发送到 Django-server 的内容吗?从它的声音来看,您尝试发送的并不是真正的 json,除非它是 url 编码或类似的东西...... 我需要向服务器发送一个令牌,例如“189E23FL2”。 【参考方案1】:

将您的字典转换为 JSON 字符串并以这种方式发送:

func jsonStringify(data: AnyObject) -> NSData? 
    var error: NSError?

    if let json = NSJSONSerialization.dataWithJSONObject(
        data,
        options: NSJSONWritingOptions(0),
        error: &error
        ) 
            return json
     else 
        return nil
    

【讨论】:

【参考方案2】:

根据如何您需要发送令牌(POST vs GET vs HTTP Body vs Query String)...您可能需要更改以下内容。但它应该让你开始使用NSURLSession。这会将令牌 189E23FL2 发送到服务器,并使用 POST 作为 HTTP 正文参数。

let url = NSURL(string: "http://some-server/endpoint")

var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.HTTPBody = "189E23FL2".dataUsingEncoding(NSUTF8StringEncoding)

// if you need a csrf token, add something like this as well:
// request.addValue("the-csrf-token", forHTTPHeaderField: "X-CSRFToken")

var sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
var session = NSURLSession(configuration: sessionConfiguration)
var task = session.dataTaskWithRequest(request, completionHandler:  (data : NSData!, response : NSURLResponse!, error : NSError!) -> Void     in

    if (error == nil) 
        println("Done!")
     else 
        println("Errorororororor")
    
)

// start the task
task.resume()

【讨论】:

执行此操作时,我从服务器收到以下消息:“详细信息”:“CSRF 失败:CSRF 令牌丢失或不正确。”使用实际服务器网站上的字段以及 Postman,如果我以以下格式发送令牌 - >“令牌”,它会成功将我注销。我不知道为什么它不接受你写的东西,这对我来说似乎是最合乎逻辑的。 CSRF 错误与跨站点请求伪造有关。由于直接使用该网站,它在同一 origin 上,它不会抱怨。但在 iOS 应用程序中,您还必须发送 CSRF 令牌。类似于:request.addValue("the-csrf-token", forHTTPHeaderField: "X-CSRFToken")

以上是关于如何在没有“键值”对格式的情况下快速发送 json 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在不干扰 iOS 中键值对序列的情况下读写 json 文件?

如何通过 js对json的键值成员做存在与否的条件的判断

使用奇怪的 JSON 文件格式查找汇率键值

如何在JSON格式的android动态键值对中动态获取输入数据

如何在不指定键值的情况下获取 JSON 对象的最后一个元素?

如何在没有可选值的情况下将字典数组快速转换为json字符串[重复]