中使用JSON的斯威夫特3
问题描述:
我想,包括我的快捷应用程序内Zoho的图书API ZOHO的书籍POST方法。 我想创建一个项目使用POST方法,但我不断有一个错误消息说我的JSONString是错误的。中使用JSON的斯威夫特3
这里是ZOHO文档发送请求,使用POST方法,以创造和项目:
https://books.zoho.com/api/v3/items
?authtoken=e07119171812c29b3a0dacdb79a57e3f
&organization_id=10234695
&JSONString={
"name": "Hard Drive",
"description": "500GB, USB 2.0 interface 1400 rpm, protective hard case.",
"rate": 120.00,
"account_id": "460000000000388",
"tax_id": "460000000027005"
}
这是我做。我感到莫名其妙我JSONString犯规达到预期格式...
let postData = [
"authtoken" : "ZZZZZZZZZZZZZZZZZZZZZZ",
"organization_id" : "XXXXXXXXXXX",
"JSONString" :
[
"name": "Hard Drive",
"description": "500GB, USB 2.0 interface 1400 rpm, protective hard case.",
"rate": 120.00,
"account_id": "460000000000388",
"tax_id": "460000000027005"
]
] as [String : Any]
var request = URLRequest(url: NSURL(string:"https://books.zoho.eu/api/v3/items")! as URL)
request.httpMethod = "POST"
request.httpBody = try! JSONSerialization.data(withJSONObject: postData, options: [])
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
Alamofire.request(request).responseJSON
{ response in
if let JSON = response.result.value {
let zohoResponse: [String: AnyObject] = JSON as! [String : AnyObject]
print(zohoResponse)
}
}
而答案:
["code": 4, "message": Invalid value passed for JSONString]
我管好,使GET请求,所以我认为它应该是管理使用中的POST方法我的快速应用程序也是如此。
非常感谢您的帮助
问候
答
UPDATE:
我找到的解决方案是通过发送使用字符串参数,而不是JSON一个POST请求。
如果你有一个替代的解决方案,我interrested,但我使用的一个作品......
class func sendPostZoho(url : String, dataArray : [String: AnyObject] , completionHandler : @escaping ([String : AnyObject])->()) {
let jsonstring = try! JSONSerialization.data(withJSONObject: dataArray, options: [])
let convertedString = String(data: jsonstring, encoding: .utf8)
let percentageString = convertedString?.replacingOccurrences(of: "\"", with: "%22")
var request3 = URLRequest(url: URL(string: url)!)
request3.httpMethod = "POST"
let StringtoPost = "&JSONString=" + percentageString!
request3.httpBody = StringtoPost.data(using: .utf8)
Alamofire.request(request3).responseJSON
{ response in
if let JSON = response.result.value {
let DictionnaryResponse: [String: AnyObject] = JSON as! [String : AnyObject]
completionHandler(DictionnaryResponse)
}
}
}