Я использую Alamofire для выполнения всех сетевых запросов в моем приложении. Я столкнулся с проблемой при параметре кодирования как JSON в запросе get.Запросить время при использовании кодировки параметров JSONEncoding.default
Следуя по моей просьбе:
Alamofire.request(url, method: .get, parameters: params, encoding: JSONEncoding.default)
.responseJSON(completionHandler: { (response) in
switch response.result {
case .success(let retrivedResult):
print(retrivedResult)
// success(brandTags)
break
case .failure(let errorGiven):
print(errorGiven)
print(String(data: response.data!, encoding: String.Encoding.utf8) ?? "")
failure(APICaller.parseErrorAndGiveMessage(givenError: errorGiven as NSError))
break
}
})
Когда я закодировать параметры, как JSONEncoding.default
, как указано выше, запрос всегда раз с следуя в моих журналах:
2016-12-27 12:22:41.425948 xyz[5140:133008] [] nw_endpoint_flow_service_writes [2.1 35.164.98.40:80 ready socket-flow (satisfied)] Write request has 4294967295 frame count, 0 byte count
2016-12-27 12:23:41.485534 xyz[5140:133041] [] nw_endpoint_flow_service_writes [2.1 35.164.98.40:80 ready socket-flow (satisfied)] Write request has 4294967295 frame count, 0 byte count
Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x60000024a9b0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://xyz-beta.abc.com/v1/brands/1a1/notifications, NSErrorFailingURLKey=http://xyz-beta.abc.com/v1/brands/1a1/notifications, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
2016-12-27 12:23:41.488336 xyz[5140:133868] [] __tcp_connection_write_eof_block_invoke Write close callback received error: [89] Operation canceled
Но когда я удалить параметр кодировка, как показано ниже, запрос завершается надлежащим образом без каких-либо проблем.
Alamofire.request(url, method: .get, parameters: params, encoding: JSONEncoding.default)
.responseJSON(completionHandler: { (response) in
switch response.result {
case .success(let retrivedResult):
print(retrivedResult)
// success(brandTags)
break
case .failure(let errorGiven):
print(errorGiven)
print(String(data: response.data!, encoding: String.Encoding.utf8) ?? "")
failure(APICaller.parseErrorAndGiveMessage(givenError: errorGiven as NSError))
break
}
})
В чем разница?
UPDATE:
Я открыл этот вопрос с Alamofire сообщества на Github и this is their response. Надеюсь, что это поможет людям, столкнувшимся с подобной проблемой.
tnx. вы спасли мое время. –