我编写了一个使用Almofire for REST的ios程序,对于应用程序的一部分,我需要向服务器发送POST请求并获取JSON,Alamofire正确发送请求和服务器响应应用程序但Almofire确实没有显示响应,实际上在下面的代码中,编译器从不运行“print(Result)”甚至服务器响应正确,为什么? (在代码中,评论不是英文!)
Alamofire.request(urlString, method:HTTPMethod.post , parameters: parameters, encoding: JSONEncoding.default, headers:headers).responseJSON
{ Result in
// (responseData) -> Void in
print(Result)
if((Result.result.value) != nil)
{
//data ra be value tabdil mikonad
let ResValue = JSON(Result.result.value!)
print(ResValue)
//check mikone ke aya key be name access_token vojod dare ya na
if ( ResValue["error"].exists() )
{
//agar token expire shode bud
if (ResValue["error"] == "Authorization Required")
{
let pass = keychain.get("password")
//initial kardan class marbut be function get token
let get = LoginAndRegistration()
//estefade az function get token
get.getToken(userName:userName,passWord:pass!)
{ results in
//agar gereftan token taiid shod
if results == "token got!"
{
//gereftan data
Alamofire.request(urlString,method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: ["content-Type":"application/json","Authorization":"JWT \(token)"]).responseJSON
{ response in
//agar data vojod dasht
if((response.result.value) != nil)
{
//data ra be value tabdil mikonad
let responseValue = JSON(response.result.value!)
//enteghal data be dakhel tabe khanandeh
//self.hairdressShow(json: responseValue)
DataRe(responseValue)
}
}
}
//agar token jadid ham daryaft nashod
else
{
//seque be login page
//DataRe((["test"] as AnyObject) as! Array<Any>,1,1)
// DataRe(["message":"seque"])
}
}
}
}
//agar value "Data" vojod dasht, yani hamechi ok !
if ( ResValue["Data"].exists() )
{
//self.hairdressShow(json: ResValue)
DataRe(ResValue)
}
else
{
// DataRe(["message":"Something's Wrong"])
}
}
}.resume()
答案 0 :(得分:0)
您是否尝试过使用&#34;结果&#34;而不是&#34;结果&#34;?我认为Alamofire正在使用枚举结果,而不是你想要的变量,这就是为什么它像一个类一样着色。我不知道这是否能解决您的问题,但您可以尝试。
变量总是小写。
答案 1 :(得分:0)
试试这个:
Alamofire.request(urlString, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON { response in
print("Request: \(String(describing: response.request))")// original url request
print("Response: \(String(describing: response.response))")// http url response
print("Result: \(response.result)")// response serialization result
if let json = response.result.value {
print("JSON: \(json)") // serialized json response
}
}
以下是文档:https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#http-methods