Это плохой дизайн API.Вынуждая встраивать JSON в одинарные кавычки, я бы посоветовал, если вы не можете указать внутреннему разработчику исправить это.
Тем не менее, если вы хотите, чтобы он работал, вы можете просто преобразовать одинарные кавычки в Data
, и то, что вы назвали httpBody
, добавьте эту одинарную кавычку до и после.
При плохой практике с принудительным развёртыванием (использование !
), но чтобы подчеркнуть логику:
let parameters = ["api_key": "key_api1234",
"api_secret": "asdfg",
"uniqueid": "LDM23564GQQP",
"password": "test1",
"pin": "94729"]
var request = URLRequest(url: URL(string: "www.stackoverflow.com")!)
let singleQuote = "'".data(using: .utf8)!
let parametersJSON = try! JSONSerialization.data(withJSONObject: parameters, options: [])
let finalBody = singleQuote + parametersJSON + singleQuote
print("request.httpBody string: \(String(data: finalBody, encoding: .utf8)!)")
request.httpBody = finalBody
Вывод:
$>request.httpBody string: '{"api_key":"key_api1234","uniqueid":"LDM23564GQQP","pin":"94729","password":"test1","api_secret":"asdfg"}'