Red de conocimiento informático - Material del sitio web - Cómo usar Alamofire para programación de redes en Swift

Cómo usar Alamofire para programación de redes en Swift

Alamofire es una biblioteca de clases de red para usar en Swift escrita por el autor de AFNetworking. Tiene una lógica clara y es fácil de usar.

Por supuesto, AFNetworking aún se puede usar en. Swift. Sí, pero no lo recomiendo.

Instalación de Alamofire

Puedes instalarlo a través de Cocoapods. La configuración del podfile es la siguiente:

plataforma. : ios, '8.0 '

use_frameworks!

objetivo 'nombre de su proyecto' do

pod 'Alamofire', '~> 3.3.0'

fin

Luego vaya a la terminal y ejecute pod install Antes de usar, importe Alamofire

Uso básico, solicite datos

Solicitud de datos generales.

p>

//Puse la solicitud en el evento de clic del botón

@IBAction func onBtnClick(sender: UIButton) {

//Aquí use un teléfono de consulta Tome la interfaz a la que pertenece el número como ejemplo,

Alamofire.request(.GET,, requestURL,parameters: ["phone":phoneNumber],codificación: .URL,headers: [ "apix-key":apiKey ]).responseJSON { (respuesta) en

//Si la solicitud fue exitosa

// si respuesta.result.isSuccess{}

if let jsonValue = respuesta .result.value {

print(jsonValue)

}

}

}

Alamofire.request (Método, URLString, parámetros, codificación, encabezados)

//Este es un método de inicialización completo de Alamofire.Request, donde:

/ /Método, método de solicitud, como: .GET .POST .DELETE, etc.

//URLString, interfaz de solicitud

//parámetros, parámetros de solicitud, tipo de diccionario, si El método GET solicita datos, los parámetros pasados ​​se convertirán a la forma de clave1=valor1&clave2=valor2

//codificación, método de codificación, Alamofire proporciona una enumeración para indicar la codificación utilizada en la solicitud, como .URL, .JSON, entonces el método GET se usa generalmente para solicitar datos. Método de codificación de URL

//encabezados, encabezados de solicitud, correspondientes al atributo allHTTPHeaderFields en NSURLRequest

Esto es una solicitud GET ordinaria, y el parámetro entrante Alamofire automáticamente clave = valor & kay2 = valor2 forma empalme, si la solicitud es POST o los parámetros de la solicitud deben transmitirse en formato JSON =, se puede pasar el parámetro de codificación. JSON

El parámetro que obtenemos en el cierre de ResponseJSON es un cuerpo de estructura, que incluye la solicitud.

El objeto de solicitud solicitado, los datos devueltos, los resultados de la solicitud, etc.

Control de resultados de respuesta

Alamofire.request() devuelve un objeto de solicitud, y los parámetros del objeto de solicitud son todos para Esta solicitud entre los parámetros incluidos, ResponseJSON controla el resultado devuelto. Para el caso en que el resultado devuelto sean datos JSON, Alamofire también proporciona métodos para procesar otros resultados devueltos:

response()

<. p >responseData()//Datos binarios

responseString(codificación: NSStringEncoding)//Resultado de cadena

responseJSON(opciones: NSJSONReadingOptions)//Datos JSON

ResponsePropertyList(options: NSPropertyListReadOptions)//Lista de propiedades

///El método de respuesta debe estar determinado por el resultado devuelto por el servidor. Si el servidor le proporciona datos JSON, utilice ResponseJSON. datos, luego utilícelos también correspondiente

Utilice validar() para verificar si la solicitud se realizó correctamente

Alamofire.request(.GET, requestURL,parameters:["phone":phoneNumber. ],codificación: .URL,headers: ["apix-key":apiKey]).validate().responseJSON { (respuesta) en

//Si la solicitud fue exitosa

cambiar respuesta.resultado{

case .Success:

print("Solicitud de datos exitosa")

case .Failure(let error):

print(error)

}

}

validate() controla el código de estado de la respuesta de confirmación dentro del rango aceptable 200-299. Si la verificación falla, se producirá un error interno en el método de procesamiento de respuesta.

Cargar datos

Un ejemplo simple de carga de archivos

let fileURL = NSBundle .mainBundle().URLForResource(" 1", withExtension: "jpg")

Alamofire.upload(.POST, uploadURL, file: fileURL!)

//Los dos primeros Los parámetros aquí son el método de conexión, la interfaz de solicitud, el tercer parámetro es la URL local del archivo que se va a cargar

Por supuesto, también puede cargarlo en forma de NSData:

Alamofire.upload(.POST, uploadURL, data: " upload Data".dataUsingEncoding(NSUTF8StringEncoding)!)

Otros incluyen el uso de MultipartFormData, etc., que no se presentarán aquí.

Supervisión del progreso al cargar archivos adjuntos

Alamofire.upload(.POST, uploadURL, data: "upload Data".dataUsingEncoding(NSUTF8StringEncoding)!).pro

gress { (escrito, totalEscrito, totalNeedsToWrite) en

print("bytes escritos \(escrito) totalEscrito \(totalWritten) totalBytes\(totalNeedsToWrite)")

///Cada vez Cargar parte de los datos devolverá este cierre.

}

De manera similar, ya sea cargando, solicitando datos o descargando un archivo, podemos obtener la respuesta del servidor, por lo que la carga también puede utilizar la serie de métodos de respuesta:

Alamofire.upload(.POST, uploadURL, data: "upload Data test ".dataUsingEncoding(NSUTF8StringEncoding)!).progress { (escrito, totalWritten, totalNeedsToWrite) en

print("bytes escritos \(escrito) totalWritten \(totalWritten) totalBytes\(totalNeedsToWrite)")

}.responseJSON { (respuesta) en

print(respuesta)//La respuesta del servidor a esta carga de datos

}

Mientras haya una carga, habrá una descarga. método download() para realizar la operación de descarga:

///El archivo descargado en este ejemplo es una imagen aleatoria encontrada en Internet

Alamofire.download(.GET, "/ attch/day_160218/20160218_d968438a2434b62ba59dH7q5KEzTS6OH.png") { (URL, respuesta) -> NSURL en

var ruta = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]

ruta += "/\(response.suggestedFilename!)"

return NSURL.fileURLWithPath(path)

}

El método de descarga acepta un cierre. se llama después de que se completa la descarga del archivo. Después de descargar el archivo devuelto en el paquete, guarde la ruta del recurso de este archivo. También puede dividir una función por separado y luego pasar el nombre de la función. >Si cree que esto es más problemático o que no es necesario incluirlo en el cierre. Para esos códigos, podemos usar la ruta de recursos predeterminada:

///Aquí se usa la ruta del documento del sistema

let destino = Alamofire.Request.suggestedDownloadDestination(directorio: .DocumentDirectory, dominio: .UserDomainMask)

Alamofire.download(.GET, "/attch/day_160218/20160218_d968438a2434b62ba59dH7q5KEzTS6OH.png", destino

ation: destina)

Del mismo modo, la descarga de archivos también puede detectar el progreso de la descarga

//Implemente aquí la lógica de detección del progreso de la descarga

}

Si necesita reanudar la descarga de archivos después de los puntos de interrupción, es relativamente sencillo de implementar. En primer lugar, Alamofire proporciona el método de descarga correspondiente:

Alamofire.download(resumeData: NSData(), destino: destino)<. /p>

El primer parámetro debe pasarse en los datos descargados, y luego la descarga puede continuar según los datos descargados. Luego, todo lo que tenemos que hacer es descargar cuando hay un error o pausar. datos descargados. Esta es la idea de implementación general, no la demostraré aquí.