2016-09-25 16 views
5

tôi cần phải vượt qua json sau để chức năng này để Shopify Api có thể hiểu được nộp.nhanh chóng json tham số 3 gửi bài đến api

Mỗi lần tôi thực thi mã này, tôi nhận được một thông báo lỗi rằng có một tham số cần mất tích. Rõ ràng, tôi không thể tạo định dạng biến chính xác và chuyển nó đến máy chủ.

Shopify API được mong đợi các json sau để được chuyển qua POST

{ 
    "customer": { 
     "first_name": "Steve", 
     "last_name": "Lastnameson", 
     "email": "[email protected]", 
     "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" 
      } 
     ] 
    } 
} 

Đây là mã của tôi gửi bài:

let customer = [ 
    "customer": [ 
     "first_name": "Steve", 
     "last_name": "Lastnameson", 
     "email": "[email protected]", 
     "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() 
+0

Phản hồi chính xác mà bạn nhận được từ máy chủ là gì? –

+1

để tạo ra một tài khoản khách hàng mới – Hamid

+0

vấn đề là máy chủ không nhận được dữ liệu theo định dạng mong muốn – Hamid

Trả lời

5

Các yêu cầu cần có các kiểu nội dung kê khai. Thêm:

request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
request.addValue("application/json", forHTTPHeaderField: "Accept") 
Các vấn đề liên quan