gpt4 book ai didi

iOS Swift POST 参数和正文

转载 作者:行者123 更新时间:2023-11-28 08:08:30 24 4
gpt4 key购买 nike

我正在尝试将一个关键参数和一个 JSON 字典主体发布到一个 API,但由于某种原因它不起作用。

这是我到目前为止的工作。 enter image description here

@IBAction func POST(_ sender: Any) {
let url = URL(string: "http://apilink.com/updateProfile&=param")!
let jsonObject = ["FName":"Tarik",
"LName":"Salama"]
let jsonData = try! JSONSerialization.data(withJSONObject: jsonObject, options: [])

var request = URLRequest(url: url)
request.httpMethod = "post"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.httpBody = jsonData

let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("error:", error)
return
}

do {
guard let data = data else { return }
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: AnyObject] else { return }
print("json:", json)
} catch {
print("error:", error)
}
}

task.resume()
}

单击 POST 按钮时出现此错误:
错误:Error Domain=NSCocoaErrorDomain Code=3840 “JSON 文本不是以数组或对象开头,并且允许未设置片段的选项。” UserInfo={NSDebugDescription=JSON 文本未以数组或对象开头,并且未设置允许片段的选项。}

我做错了什么?在我检查了一些其他线程后,我尝试更改一些东西,比如将参数和数据字典放入键:值字典中,但 API 响应并说数据无效,这意味着整个东西以不正确的格式发送。注意:我不允许使用像 Alamofire 这样的第 3 方库,并且 API 链接工作正常,如屏幕截图所示。

最佳答案

可以通过打印响应数据来检查问题

do {
guard let data = data else { return }
print(String(data: data, encoding: .utf8) ?? "No Conversion") //Print Here
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: AnyObject] else { return }
print("json:", json)
} catch {
print("error:", error)
}

查看“在此处打印”行。我相信响应不是有效的 json,因此当您尝试将数据解析为 JSOn 时,它总是会在 catch block 中结束。

关于iOS Swift POST 参数和正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44411062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com