Swift 3请求帖子,回复返回无
我有帖子请求和解析响应json代码,但我的代码不工作。Swift 3请求帖子,回复返回无
我的类代码
@discardableResult
open func getLoginMethod(_ method: String, parameters: String, completionHandler: @escaping (_ login: [Login]?, _ error: Error?) -> Void) -> URLSessionTask! {
let session = URLSession.shared
guard let url = NSURL(string: parameters) else {
completionHandler(nil, myErrors.InvalidUrlError)
return nil
}
let request = NSMutableURLRequest(url: url as URL)
request.httpMethod = "POST"
let sendingdata = "Simple=1"
request.httpBody = sendingdata.data(using: String.Encoding.utf8);
let task = session.dataTask(with: request as URLRequest) { data, response, error in
if error != nil {
completionHandler(nil, myErrors.getError)
} else {
do {
let login = try self.getLogin(jsonData: data! as NSData)
print(login)
completionHandler(login, nil)
} catch {
completionHandler(nil, error)
}
}
}
task.resume()
return task
}
当我点击动作按钮的代码给我只能
零
输出。我在哪里做错了任何想法?
请找到下面的代码使用我这是工作的罚款与当地son.Since你没有提供网址和其他细节
if let file = Bundle.main.path(forResource: "response", ofType: "json") {
do {
let jsonData = try Data(contentsOf: URL(fileURLWithPath: file))
let login = try self.getLogin(rawData: jsonData)
let arr = login.first
if let date = arr?.ServerCurrentDate {
print("Comming Date = \(date)")
}
}
catch{
print(error)
}
}
private func getLogin(rawData: Data) throws -> [Login] {
var login = [Login]()
do {
if let jsonDict = try JSONSerialization.jsonObject(with: rawData, options: .allowFragments) as? [String: AnyObject] {
print(jsonDict)
if let result = jsonDict["Result"] as? [String : AnyObject]
{
var properties = [String: AnyObject]()
properties["IsSuccess"] = result["IsSuccess"] as? Bool as AnyObject?
properties["MemberId"] = result["MemberId"] as? Int as AnyObject?
properties["Name"] = result["Name"] as? String as AnyObject?
properties["Image"] = result["Image"] as? String as AnyObject?
properties["FacebookId"] = result["FacebookId"] as? Int as AnyObject?
properties["FacebookMail"] = result["FacebookMail"] as? String as AnyObject?
properties["Phone"] = result["Phone"] as? String as AnyObject?
properties["Code"] = result["Code"] as? String as AnyObject?
properties["Token"] = result["Token"] as? String as AnyObject?
properties["ServerCurrentDate"] = result["ServerCurrentDate"] as? String as AnyObject?
let loginget = Login(properties: properties)
login.append(loginget)
}
}
} catch {
print(error)
}
return login
}
而且我的本地JSON文件
response.json
{
"Result": {
"IsSuccess": true,
"MemberId": 73,
"Name": "X4r-7a",
"Image": "MemberImage/48a25240-26a9-46bf-8eb5-72a6b86ad555.png",
"FacebookId": null,
"FacebookMail": null,
"Phone": "0111111112",
"Code": "5425",
"Token": "570f4112-0f37-4e23-a2d7-5dad6af9378a",
"ServerCurrentDate": "2016-11-23-10-41-32"
}
}
@Vinodth ty男人请批准编辑。你的代码与真正的json文件一起工作,但我认为我有服务器端问题。 – SwiftDeveloper
你只有我给了这个回应,所以我用它。 – Vinodh
你的值是一个更深一步的JSON结构:
...
if let result = jsonDict["Result"] as? [String : AnyObject]
{
properties[LoginJsonKeys.Name] = result["Name"] as? String
}
...
希望帮助
是的,我将它添加到我的课程代码中,就像你展示的一样,但是当输出结果相同时结果是零。 – SwiftDeveloper
@Vinodh耶确保模型的代码实现。我认为request.httpBody = sendingdata.data错误(使用:String.Encoding.utf8);或如果让jsonArray =尝试JSONSerialization.jsonObject(与:jsonData作为数据,选项:.allowFragments)为? [字符串:AnyObject] { – SwiftDeveloper
@Vinodh我也加入了登录模式 – SwiftDeveloper
@Vinodh nope仍然相同 – SwiftDeveloper