Können iOS-Geräte senden PUT-Anfragen an den Rails-apps?

Wir haben versucht mehrere Male zu senden update-PUT-Anfragen zu unseren Rails server und wir halten den Empfang 404 "die Seite, Die Sie gesucht haben existiert nicht"

Unsere update-Methode ist sehr einfach (nahezu generische Schienen).

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

Ende

Wenn ich mit CURL von der Kommandozeile zum testen der update-Methode, es funktioniert Prima. Aber, wenn ich versuche, die gleichen Methoden in objective-c, es führt immer zu einem 404-Fehler.

Also meine Frage ist: können iOS-Geräte senden, STELLEN Anfragen an Server mittels NSURLConnection oder ist das nicht implementiert?

UPDATE::

Das nicht aktualisieren der Datenbank

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];

Dies aktualisiert die Datenbank

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];
  • Posting Ruby-code, wenn Sie Ihre Frage über das iOS-Unterstützung wahrscheinlich nicht tun Sie etwas gutes. Wenn Sie stattdessen posten Sie Ihre Objective-C-code, können wir schauen und sehen, wenn Sie das setzen der HTTP-Methode korrekt (wie David V unten dargestellt).
  • Ja, tut mir Leid, dass. Ich Schreibe die Schienen zu Ende, und einem anderen Entwickler geschrieben hatte, die in objective-c, und ich hatte keinen Zugang zu seinem code. Es ist bis jetzt.
  • Ich Frage mich, ob es etwas mit der Tatsache zu tun, dass Sie nicht entkommen die '[' und'] ' - Zeichen. Versuchen Sie, die Einstellung der HTTP-body mit Daten, die sich aus der Zeichenkette @"user%5Bfirst_name%5D=brian".
  • Ich Verschwendete fast einen Tag herauszufinden dieses heraus.
  • Das klingt wie ein Sicherheits-Loch. Wie würden Sie die Authentifizierung der PUT-Anfrage?
Schreibe einen Kommentar