如何以实际格式将数据发布到服务器上?



我在服务器上发布我的参数数据,如下所示。

let parameters : [String : Any] = [

"cartdata" : cartArr,            //cartArr is an array 
"previewcart" : previewcart,
"json" : json,
"video" : video,
"token" : token,
"user_id" : userID,
"flag" : true

]


print(parameters) 


let postBody = createJSONParameterString(postBody: parameters as NSDictionary)       //The issue is here. Here the cartArr is converting into string.
print(postBody)

URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else {
if error == nil{
print(error?.localizedDescription ?? "Unknown Error")
}
return
}

if let response = response as? HTTPURLResponse{
guard (200 ... 299) ~= response.statusCode else{
print("Status code :- (response.statusCode)")
print(response)
return
}
}

在postBody中,数据是这样的

{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjQ5MzE3Y2MxZmMyYjMzOWNkNTMzNDFiYTU1ZjBmMjc5MmY1NTI2YWVjYTI4YjllMjQ0OWVjM2VhMGY4NTM0ZWYwYTZmNDFlMjQyNWUxN2M5In0.eyJhdWQiOiIxIiwianRpIjoiNDkzMTdjYzFmYzJiMzM5Y2Q1MzM0MWJhNTVmMGYyNzkyZjU1MjZhZWNhMjhiOWUyNDQ5ZWMzZWEwZjg1MzRlZjBhNmY0MWUyNDI1ZTE3YzkiLCJpYXQiOjE1OTI4OTU4NjUsIm5iZiI6MTU5Mjg5NTg2NSwiZXhwIjoxNjI0NDMxODY1LCJzdWIiOiIzNjMiLCJzY29wZXMiOltdfQ.QbUbOwiDLNLrcJoP56sTz7-U9X3znJu9q3H9TQLjBJG2w6FHl_6s7em0veqcRA8tMLJBVkWu3kz1NFYzuhAzU1KDaUdajiPFyu7bqfAMQowaEweZOI6gEHr6OqGf4Br6poERZJrnj3N9OXBrT3Z2PSyL_q9oex9oWeag48LdeKeyPql5UtyXvDzATePBkfbt1l704tpuNGQ-ZIjUtAXDK-h2ZoDLl_oxxdZ3I4cLAL027BGmPCz_K1h2OjjJ8adDeJfD3RrOdeKwc-fE11O5dVq7cpDO4luNFveFTpe_ekM7xlLBv7JGhfNauEnlui2OhI_AuTGoa79YPt8Q-XLGHcUCQiTqsiJf9TYEGbuRrHz4ZjmCmr0mWoyfcizeWUTiQ5nfHMxRKsVU0E4eUW1D87Dw5XMi4QeRdjcIVvNJPnQnqg5WlPOp82bP8XdEgC75M0eAzawgyRfvSosdzj-9BvyNZfPZZ4aK3vsTw7KYkRER2UKooEnOZlTJMRksBby3QyHhRyY6pxPl1AkJIWMamE_tRq7EYBXDUTfhBUF9Usg2I_4EbWwv1aJ2A6kSLGIZpTFHvqgWyVjKQdF9xRg5gM2x02LFNY6YHIDqAfgEiXQp3N5pCXnFYm2yIz9_--C-08VfNWnuDSv9Cj6aZeWE6tKMwarm1VpIuNW-kzqqaYo","flag":true,"json":{"duration":20,"slottime":2,"type":"selected"},"video":{"name":"uploadlater"},"user_id":363,"cartdata":["{n  "id" : "37",n  "slots" : [n    {n      "maxSlot" : 90,n      "total" : 20,n      "type" : "NORMAL",n      "time" : "04:00 PM",n      "location_id" : 31,n      "bookdate" : "2020-06-25",n      "price" : "10",n      "quantity" : 2,n      "tv_position" : 1,n      "device_id" : 8,n      "id" : 37n    }n  ],n  "building" : "GIP Mall",n  "image" : "https:\/\/hifyapp.com\/dashboard\/public\/images\/LocationGallery\/5ee21c7ae214e.jpg",n  "site_name" : 31,n  "solt_price" : "10",n  "landmark" : "Sector 38, Noida, Uttar Pradesh 201301",n  "booking_date" : "2020-06-25"n}"],"previewcart":{"totalsites":1,"price":20,"subtotal":"23.6","quantity":2}}

在这个 cartArr 数据正在转换为字符串,但我必须像下面这样发送它。

{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjQ5MzE3Y2MxZmMyYjMzOWNkNTMzNDFiYTU1ZjBmMjc5MmY1NTI2YWVjYTI4YjllMjQ0OWVjM2VhMGY4NTM0ZWYwYTZmNDFlMjQyNWUxN2M5In0.eyJhdWQiOiIxIiwianRpIjoiNDkzMTdjYzFmYzJiMzM5Y2Q1MzM0MWJhNTVmMGYyNzkyZjU1MjZhZWNhMjhiOWUyNDQ5ZWMzZWEwZjg1MzRlZjBhNmY0MWUyNDI1ZTE3YzkiLCJpYXQiOjE1OTI4OTU4NjUsIm5iZiI6MTU5Mjg5NTg2NSwiZXhwIjoxNjI0NDMxODY1LCJzdWIiOiIzNjMiLCJzY29wZXMiOltdfQ.QbUbOwiDLNLrcJoP56sTz7-U9X3znJu9q3H9TQLjBJG2w6FHl_6s7em0veqcRA8tMLJBVkWu3kz1NFYzuhAzU1KDaUdajiPFyu7bqfAMQowaEweZOI6gEHr6OqGf4Br6poERZJrnj3N9OXBrT3Z2PSyL_q9oex9oWeag48LdeKeyPql5UtyXvDzATePBkfbt1l704tpuNGQ-ZIjUtAXDK-h2ZoDLl_oxxdZ3I4cLAL027BGmPCz_K1h2OjjJ8adDeJfD3RrOdeKwc-fE11O5dVq7cpDO4luNFveFTpe_ekM7xlLBv7JGhfNauEnlui2OhI_AuTGoa79YPt8Q-XLGHcUCQiTqsiJf9TYEGbuRrHz4ZjmCmr0mWoyfcizeWUTiQ5nfHMxRKsVU0E4eUW1D87Dw5XMi4QeRdjcIVvNJPnQnqg5WlPOp82bP8XdEgC75M0eAzawgyRfvSosdzj-9BvyNZfPZZ4aK3vsTw7KYkRER2UKooEnOZlTJMRksBby3QyHhRyY6pxPl1AkJIWMamE_tRq7EYBXDUTfhBUF9Usg2I_4EbWwv1aJ2A6kSLGIZpTFHvqgWyVjKQdF9xRg5gM2x02LFNY6YHIDqAfgEiXQp3N5pCXnFYm2yIz9_--C-08VfNWnuDSv9Cj6aZeWE6tKMwarm1VpIuNW-kzqqaYo","flag":true,"json":{"duration":20,"slottime":2,"type":"selected"},"video":{"name":"uploadlater"},"user_id":363,"cartdata":["{"id" : "37", "slots" : [ { "maxSlot" : 90,      "total" : 20, "type" : "NORMAL", "time" : "04:00 PM", "location_id" : 31, "bookdate" : "2020-06-25", "price" : "10", "quantity" : 2, "tv_position" : 1, "device_id" : 8, "id" : 37 }],  "building" : "GIP Mall", "image" : "https:\/\/hifyapp.com\/dashboard\/public\/images\/LocationGallery\/5ee21c7ae214e.jpg", "site_name" : 31,"solt_price" : "10", "landmark" : "Sector 38, Noida, Uttar Pradesh 201301","booking_date" : "2020-06-25"}"],"previewcart":{"totalsites":1,"price":20,"subtotal":"23.6","quantity":2}}

您似乎正在创建一个JSON并将其转换为String,然后将其转换为数据以作为httpBody发送。修改createJSONParameterString方法,如下所示以解决此问题。

func createJSONParameterString(postBody: [String: Any]) -> Data? {
try? JSONSerialization.data(withJSONObject: postBody)
}

用法:

request.httpBody = createJSONParameterString(postBody: parameters)

最新更新