首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >swift 3将json参数发布到api

swift 3将json参数发布到api
EN

Stack Overflow用户
提问于 2016-09-25 20:38:48
回答 1查看 5.3K关注 0票数 5

我需要将以下json传递给此函数,以便Shopify Api可以理解提交。

每次执行此代码时,我都会收到一条错误消息,指出缺少必需的参数。显然,我无法创建正确的变量格式并将其传递给服务器。

Shopify API期望通过POST传递以下json

代码语言:javascript
复制
{
    "customer": {
        "first_name": "Steve",
        "last_name": "Lastnameson",
        "email": "steve.lastnameson@example.com",
        "verified_email": true,
        "addresses": [
            {
                "address1": "123 Oak St",
                "city": "Ottawa",
                "province": "ON",
                "phone": "555-1212",
                "zip": "123 ABC",
                "last_name": "Lastnameson",
                "first_name": "Mother",
                "country": "CA"
            }
        ]
    }
}

这是我的帖子代码:

代码语言:javascript
复制
let customer = [
    "customer": [
        "first_name": "Steve",
        "last_name": "Lastnameson",
        "email": "steve.lastnameson@example.com",
        "verified_email": "true",
        "addresses": [
            [
                "address1": "123 Oak St",
                "city": "Ottawa",
                "province": "ON",
                "phone": "555-1212",
                "zip": "123 ABC",
                "last_name": "Lastnameson",
                "first_name": "Mother",
                "country": "CA",
            ],
        ],
    ],
] as [String: Any]

var request = URLRequest(url: URL(string: shopUrl + "/admin/customers.json")!)
request.httpMethod = "POST"
request.httpBody = try! JSONSerialization.data(withJSONObject: customer, options: [])

URLSession.shared.dataTask(with:request, completionHandler: {(data, response, error) in
    if error != nil {
        print(error)
    } else {
        do {
            guard let json = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any] else { return }

            guard let errors = json?["errors"] as? [[String: Any]] else { return }
                if errors.count > 0 {
                    // show error
                    return
                } else {
                    // show confirmation
                }
            }
        }
    }).resume()
EN

回答 1

Stack Overflow用户

发布于 2016-12-15 23:06:01

请求需要声明内容类型。添加:

代码语言:javascript
复制
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39686908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档