Hemos intentado numerosas veces enviar solicitudes PUT de actualización a nuestro servidor Rails y seguimos recibiendo un 404 "La página que estaba buscando no existe"¿Pueden los dispositivos iOS enviar solicitudes PUT a aplicaciones de Rails?
Nuestro método de actualización es muy simple (raíles prácticamente genéricos).
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
final
Cuando corro rizo de la línea de comandos para probar el método de actualización, que funciona bien. Pero, cuando pruebo los mismos métodos en objetivo-c, siempre resulta en un error 404.
Así que mi pregunta es: ¿pueden los dispositivos iOS enviar solicitudes PUT a servidores que usan NSURLConnection o no está implementado?
ACTUALIZACIÓN ::
Esto no actualiza la base de datos
NSString *dataString = @"user[first_name]=bob";
NSData *postBodyData = [NSData dataWithBytes: [dataString UTF8String] length:[dataString length]];
NSString *urlString = [NSString stringWithFormat:@"example.com/users/1.json"];
NSURL *fullURL = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:fullURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20];
[request setHTTPMethod: @"PUT"];
[request setHTTPBody:postBodyData];
self.todoConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
receivedData = [NSMutableData data];
Esto actualiza la base de datos
NSString *urlString = [NSString stringWithFormat:@"example.com/users/1.json?user[first_name]=bob"];
NSURL *fullURL = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:fullURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20];
[request setHTTPMethod: @"PUT"];
self.todoConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
receivedData = [NSMutableData data];
Publicación de código Ruby cuando su pregunta es sobre soporte de iOS probablemente no le hará ningún bien. Si en su lugar publica su código Objective-C, podemos mirar y ver si está configurando correctamente el método HTTP (como se ilustra a continuación en David V). – glorifiedHacker
Sí, lo siento. Estoy escribiendo el final de los rieles, y un desarrollador diferente estaba escribiendo el objetivo-c y no tenía acceso a su código. Está arriba ahora. –
Me pregunto si tiene algo que ver con el hecho de que no se está escapando de los caracteres '[' y ']'. Intente configurar el cuerpo HTTP con los datos derivados de la cadena @ "usuario% 5Bfirst_name% 5D = brian". – glorifiedHacker