2012-01-11 18 views
0

私はRestkit +のiOS 5 +レールとの奇妙な問題を抱えているとのレール上に掲載:エラー404 RestKitのiOSが5

NSArray *topicsList=[self.topicsTV.text componentsSeparatedByString:@","]; 
RKParams *params = [NSDictionary dictionaryWithObjectsAndKeys: self.questionTV.text,@"question[text]", 
                   self.descriptionTV.text,@"question[detail]",      
                   topicsList,@"topics[]", nil 
        ]; 
[[RKClient sharedClient] post:@"/questions.json" params:params delegate:self]; 

ログ:私はこのようなサーバー上のポストを行うにしようとすると、私はいくつかのプライベートコンテンツへのアクセスと何が起こっを得ることができるので、私は100%で記録された投稿する前に、私はプライベートコンテンツ(サーバーに送信されます)を更新した場合、それは与えることであることを

2012-01-11 17:24:21.725 APP[29087:fb03] I restkit.network:RKRequest.m:562 Status Code: 401 
2012-01-11 17:24:21.725 APP[29087:fb03] I restkit.network:RKRequest.m:563 Body: {"error":"You have to register or login."} 

注:このようになります私はこのエラー:

2012-01-11 17:35:51.337 APP[29087:fb03] D restkit.network.queue:RKRequestQueue.m:455 Request <RKObjectLoader: 0x811c360> failed loading in queue <RKRequestQueue: 0xc60ea10 name=(null) suspended=NO requestCount=0 loadingCount=0/5> with error: The operation couldn’t be completed. (org.restkit.RestKit.ErrorDomain error 1004.).(Now loading 0 of 5). 

操作がログアウトしましたか?私はどのようにログインセッションを生き生きとさせるべきですか?

+0

theese私のポストのためのパラメータです: パラメータ:{ "UTF8" => "✓"、 "authenticity_token" => "rEwYQT9tKGtqW4Tp4wtBZTN5zl + HPOK5k/ZpGs0nAJc ="、 "質問" => {"text" => "Prova prova prova"、 "detail" => ""}、 "suggest-query-input" => ""トピック "=> [" argomento "、" nuovo "]、"変数"=" "prova-prova-prova-1"、 "commit" => "Salva"、 "a" => "questions"} – Massimo

+0

基本的に私はそれが私が保持していないcsrfかもしれないと思った... anyアイディア? – Massimo

+0

今質問は私のiosアプリまたはレールアプリでsomethigを変更する必要がありますか? – Massimo

答えて

0

アプリがPOSTリクエストを実行しているときに、railsアプリがCSRFトークンを確認できない場合があります。 GETリクエストを実行すると、トークンをチェックする必要はありません(GETリクエストは何も変更しないため)。だから、あなたはユーザー名とパスワードで何かを得ることができますが、何かPOSTすることはできません。このblog postにはさらに詳しい情報があります。

私が助けにしたことは、JSONリクエストのチェックを無効にしたことです。もちろん

# In your application_controller.rb 
skip_before_filter :verify_authenticity_token, :if => Proc.new { |c| 
    c.request.format == 'application/json' } 

、あなたもこれを行うことができます:

# Or this in your application_controller.rb 
def verified_request? 
    if request.content_type == "application/json" 
    true 
    else 
    super() 
    end 
end 

適切にこれらのどちらかはJSONリクエストトークンを無視することができ、そしてあなたができるCRUDを。小切手を無視する場合は、自分が行っていることを知っているだけです。また

https://github.com/rails/rails/issues/3041

関連する問題