Actualización: NSURLConnection ahora parece ser compatible con 100-Continue. En cualquier caso, this answer contiene un enlace al script para compilar libcurl para iOS/OSX.Usando libcurl en iOS 5 como alternativa a NSURLConnection
Estoy teniendo un momento difícil con NSURLConnection
, dado que no es compatible con Section 8.2.3 de RFC 2616 (HTTP/1.1).
Básicamente, el cliente debe ser capaz de admitir el envío del encabezado Expect: 100-Continue
; después de enviar los encabezados de solicitud, debe esperar una respuesta del servidor con el código de estado 100
antes de enviar el cuerpo POST
/PUT
.
Además, NSURLConnection
(y en consecuencia todas las librerías que se crean encima) no devolverá ninguna respuesta del servidor hasta que se carguen todos los datos, lo cual es un problema ya que el servidor puede rechazar la carga de inmediato (credenciales no válidas , sin espacio, archivo demasiado grande, etc.). Si bien "funciona" para archivos pequeños (el contenido se carga completamente y se llama método de delegado con respuesta), en archivos grandes en lugar de obtener la respuesta de error del servidor (que estoy positivamente seguro se envía), simplemente obtener un error "Error de conexión".
Sé que libcurl
es compatible con la especificación 100-Continue
, así que necesito ayuda para compilarla y ponerla en funcionamiento en un proyecto iOS 5.
Empecé con this post (desplácese hacia abajo) pero no pude llegar lejos ...
realizan estos cambios ...
export CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2
export CFLAGS="-arch armv7 --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk"
export CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-cpp-4.2
export AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar
./configure --disable-shared --without-ssl --without-libssh2 --without-ca-bundle --without-ldap --disable-ldap --host=arm-apple-darwin10 --build=arm-apple-darwin10
make clean
make
ar rv libcurl.armv7.a lib/*.o
... pero compilación falla con el mensaje
(...)
checking for arm-apple-darwin10-gcc... /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2
checking whether the C compiler works... no
configure: error: in `/Users/bruno/Downloads/curl-7.21.4':
configure: error: C compiler cannot create executables
Estoy usando curl 7.21.4, descargado de open source site de Apple.
Entonces, ¿cómo puedo compilar curl y usarlo en un proyecto iOS 5, preferiblemente con soporte SSL?
Obtenga la última y mejor secuencia de comandos [aquí] (https://github.com/brunodecarvalho/curl-ios-build-scripts). Compila con Darwin SSL, ¡correcto, iOS/OSX SSL nativo! – biasedbit