Я хочу, чтобы мой запрос выглядел и имел такой эффект на сервере rails:
Started POST "/users/sign_in" for 127.0.0.1 at 2011-08-21 16:22:09
Processing by Devise::SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"mBzfQ73jtZ9rlj01+RCSs6mJoViFQZuRbwunQiX57oU=", "user"=>{"email"=>"a@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."email" = 'a@gmail.com' LIMIT 1
(0.4ms) UPDATE "users" SET "last_sign_in_at" = '2011-08-21 23:18:50.886178', "current_sign_in_at" = '2011-08-21 23:22:09.698853', "sign_in_count" = 7, "updated_at" = '2011-08-21 23:22:09.699635' WHERE "users"."id" = 1
Redirected to http://localhost:3000/user
Completed 302 Found in 206ms
НО мой запрос выглядит примерно так:
Started POST "/users/sign_in" for 127.0.0.1 at 2011-08-21 16:19:56
Processing by Devise::SessionsController#create as HTML
Parameters: {"commit"=>"Sign in", "password"=>"[FILTERED]", "email"=>"a@gmail.com", "remember_me"=>"1", "session"=>{"commit"=>"Sign in", "password"=>"[FILTERED]", "email"=>"a@gmail.com", "remember_me"=>"1", "action"=>"create", "controller"=>"devise/sessions"}}
WARNING: Can't verify CSRF token authenticity
Completed in 1ms
Processing by Devise::SessionsController#new as HTML
Parameters: {"commit"=>"Sign in", "password"=>"[FILTERED]", "email"=>"a@gmail.com", "remember_me"=>"1", "session"=>{"commit"=>"Sign in", "password"=>"[FILTERED]", "email"=>"a@gmail.com", "remember_me"=>"1"}}
WARNING: Can't verify CSRF token authenticity
Rendered /Users/hdj/.rvm/gems/ruby-1.9.2-p290@rails31/gems/devise-1.4.2/app/views/devise/shared/_links.erb (1.6ms)
Rendered /Users/hdj/.rvm/gems/ruby-1.9.2-p290@rails31/gems/devise-1.4.2/app/views/devise/sessions/new.html.erb within layouts/application (25.4ms)
Completed 200 OK in 162ms (Views: 94.0ms | ActiveRecord: 0.9ms)
, который, я уверен, не регистрирует меня. Код C Какао obj, который я использую, таков:
NSString *urlString = @"http://localhost:3000/users/sign_in";
NSDictionary *thestuff = [NSDictionary dictionaryWithObjectsAndKeys:
@"a@gmail.com", @"email",
@"123456", @"password",
@"1",@"remember_me",
@"Sign in", @"commit",nil];
NSString *tojson = [thestuff JSONRepresentation];
//NSLog(@"%@ %@", thestuff, tojson);
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlString]];
[request appendPostData:[tojson dataUsingEncoding:NSUTF8StringEncoding]];
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request startSynchronous];
Я использую синхронный режим просто потому, что мне нужно, чтобы пользователь вошел в систему, прежде чем перейти к следующему представлению. Другое дело, что я не уверен, как отправить имя пользователя и пароль с именем электронной почты и пароль, как вы можете видеть из запроса. Так что я использую форму JSON.
По сути, я хотел бы знать, как я могу изменить этот код, чтобы получить желаемый результат. Кроме того, есть ли способ отправить данные в форме HTML вместо использования JSON, как я использовал здесь?
Буду очень признателен за помощь здесь, и если вам нужно больше кода, я буду рад предоставить его.