2

私が構築している iOS アプリの RestKit を試し始めたところです。通常は ASIHttpRequest を使用しますが、主に JSON と CoreData 間のオブジェクト マッピングのために RestKit をテストしたいと考えています。RestKit にはいくつかの優れた点がありますが、何か間違ったことをしていたり​​、何かを見逃していない限り、本当に不十分だと感じる問題に遭遇しました。ここの誰かが私を案内してくれることを願っています。

RKObjectLoader を使用して、REST API への非同期および同期呼び出しを行っています。私のサービスは、適切な HTTP ステータス コードと何らかの説明を返すように設計されています。401 は、API が認証されたユーザーを必要とする場合の例です。

私の問題は、401 エラーが返されると、RestKit が正常に動作しなくなることです。RKResponse オブジェクトには、ペイロードが含まれているにもかかわらず、0 のステータス コードがあります。これは、NSURLConnection の HTTP ステータスの処理が不十分であることが原因であると確信していますが、RestKit が何らかの方法でこれをラップすることを期待しています。特に、RKResponse クラスには、応答のステータス コード (isOK、isCreated、isForbidden、isUnauthorized など) を判断するためのかなりの数のラッパー関数があります。

対照的に、ASIHttpRequest は NSURLConnection を使用せず、代わりに低レベルの CFNetwork コードを使用します。ASIHttpRequest を使用すると、左右にエラーを送信することなく、HTTP 経由で返されたものを正確に確認できます。

質問は、私が何か間違ったことをしているのですか、それともこれは RestKit から予想される動作ですか? [RKResponse isAuthenticated] への呼び出しに成功した人はいますか? 私には決定的ではありませんが、この点で非同期モードと同期モードでの実行に違いはありますか。基になるコードが非同期操作を呼び出しているだけであっても、同期モードで実行される NSURLConnection は少し異なる動作をすることをどこかで読みました。これは、RKRequest だけでなく、RKObjectLoader を使用することと関係がありますか? おそらく、ペイロードがモデルにマッピングできないという事実は怒りを引き起こしますが、実際にマッピングが行われる前に、RKRequest.sendSynchronously 内でコードが壊れているようです。

要するに、私のコードは HTTP ステータス コードを自由に読み取れる必要があるということです。どんなガイダンスでも大歓迎です。

ハイダー

4

2 に答える 2

0

http://groups.google.com/group/restkit/msg/839b84452f4b3e26を参照してください。

「...認証が失敗すると、認証チャレンジがキャンセルされ、リクエストが事実上無効になります。」

アップデート:

RestKit には、このためのデリゲート メソッドが既に含まれています。

(void)request:(RKRequest *)request didFailAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;

前のトリガー

(void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error

HTTP Basic 認証が失敗した場合は、代わりにこれを使用できます。

于 2012-01-25T21:46:22.230 に答える