• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 用于公共(public)休息 API 的 NSData 对象中的 JSON

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:00:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试将数据从我的应用程序发送到另一个程序员开发的 Android 应用程序也在使用该 API。我使用 NSJSONSerialization.dataWithJSONObject 将 JSON 转换为 NSData 对象,然后将其附加到 NSURLRequest 但 NSData 对象是 JSON 字符串的十六进制表示。根据另一位开发人员的说法,他的 Android 代码正在以 UTF-8 编码创建和传输 JSON 对象,所以我的问题是如何将 JSON 字符串作为 UTF-8 文本发送,或者使 API 能够尽可能无缝地处理这两个来源?

编辑:我现在使用的代码

func postToServer() {

    let endPoint: String = "http://server.com"
    guard let url = NSURL(string: endPoint) else {
        print("ERROR: cannot create URL")
        return
    }
    let urlRequest = NSMutableURLRequest(URL: url)
    urlRequest.HTTPMethod = "OST"
    urlRequest.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")

    let loc = self.getLocation()
    var content:[String: AnyObject] = ["action": "put-point", "request": ["rangeKey": self.id, "lng": loc.coordinate.longitude, "lat": loc.coordinate.latitude, "count": self.count]]

    var data: NSData! = NSData()
    do {
        data = try NSJSONSerialization.dataWithJSONObject(content, options: NSJSONWritingOptions())
        print(data)
    } catch {
        print ("Error")
    }

    urlRequest.HTTPBody = data

    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session = NSURLSession(configuration: config)


    let task = session.dataTaskWithRequest(urlRequest, completionHandler:{ data, response, error in
        guard error == nil else {
            print("ERROR: Cannot call Get on endpoint")
            print(error)
            return
        }

        guard let responseData = data else {
            print("ERROR: Did not receive any data")
            return
        }

        print("DATA: \(data)")

    })
    task.resume()
}



Best Answer-推荐答案


你可以这样做

let jsonObj = [...]
var data = NSData()

do {
    data = try NSJSONSerialization.dataWithJSONObject(jsonObj, options: .PrettyPrinted)
    let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)!
} catch {
    print("error:  \(error)")
}

*在 Swift 2 和 Xcode 7.3.1 上试过

关于ios - 用于公共(public)休息 API 的 NSData 对象中的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38471265/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap