Railsサーバーに更新PUTリクエストを何度も送信しましたが、404ページの "探していたページが存在しません"iOSデバイスからRailsアプリケーションにPUTリクエストを送信できますか?
更新方法は非常に簡単です(実質的に一般的なレール)。
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
エンド
私はupdateメソッドをテストするには、コマンドラインからCURLを実行すると、それが正常に動作します。しかし、私がobjective-cで同じメソッドを試してみると、常に404エラーが発生します。
私の質問は、iOSデバイスがNSURLConnectionを使用してサーバにPUTリクエストを送信できるのか、これは実装されていないのですか?
UPDATE ::
これは
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];
これはあなたがNSMutableURLRequestを作成し、HTTPメソッドを設定することができ
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];
Rubyコード際に投稿しますあなたの質問は、iOSのサポートはおそらくあなたに良いことはしません。代わりにObjective-Cコードを投稿すると、HTTPメソッドを正しく設定しているかどうかを調べることができます(下記のDavid Vのように)。 – glorifiedHacker
ええ、それについて申し訳ありません。私はレールの終わりを書いていますが、別の開発者が目的を書いていました.c彼のコードにアクセスできませんでした。それは今起きている。 –
あなたは '['と ']'文字をエスケープしていないという事実と関係があるのだろうかと思います。 @ "user%5Bfirst_name%5D = brian"という文字列から派生したデータでHTTP本体を設定してみてください。 – glorifiedHacker