【发布时间】:2018-12-27 07:30:56
【问题描述】:
您好,我是 IOS 应用程序开发的新手。 我的代码是
func sendRequest<T: Decodable>(api: String, parameters: [String: String]? = nil, outputBlock: @escaping (T) -> () ) {
guard let url = URL(string: "http://xxyyzz.com/appRegister.php") else {return}
print("hitting : -", url.absoluteString)
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let newparam = ["name": "rr", "pass": "123456", "email": "rr@rr.com", "passConfirm":"123456"]
let httpBody = try? JSONSerialization.data(withJSONObject: newparam)
request.httpBody = httpBody
if let data = request.httpBody, let str = String(data: data, encoding: String.Encoding.utf8) {
print(str)
}
URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in
DispatchQueue.main.async {
Indicator.shared.hideProgressView()
if let err = error {
print(err.localizedDescription)
return
}
guard let data = data else {return}
do {
let obj = String(data: data, encoding: String.Encoding.utf8)
print(obj ?? "oberrrrr")
}
}
}.resume()
}
下面是控制台打印的代码结果
击中:-http://xxyyzz.com/appRegister.php {"email":"rr@rr.com","passConfirm":"123456","name":"rr","pass":"123456"}
{"error":"请输入所有字段。"}
url 和参数在邮递员上运行良好,这意味着我的代码中缺少它们。
【问题讨论】:
-
请阅读Why is “Can someone help me?” not an actual question? 和关于提出好问题的指南:stackoverflow.com/help/how-to-ask 并调整您的问题以更具体
-
在 POSTMAN 中,您可以获得 Swift 代码。它可能并不总是“一个好的代码”,但它应该可以工作并帮助您找出有什么区别。通常要比较两者,打印请求 URL、HeadersFields 和 HTTPBody 以检查哪一个不同。
-
刚刚尝试使用邮递员代码并且代码已过时并且尝试解决错误时。一个数据变量用于 httpBody 之前从未定义过。
-
在邮递员中显示你在做什么。此外,如果您使用相同的凭据在 Postman 中进行了注册,如果新用户想要使用相同的电子邮件或用户进行注册,这可能是服务器返回的标准错误?
-
我总是使用不同的凭据,如果使用相同的条目,服务器会给出已创建用户的正确错误
标签: swift post urlsession urlrequest