0

iOS は初めてです... token_authenticatable でセットアップされた Rails/Devise アプリケーションがあります。有効な電子メールとパスワードが投稿されたときにトークンを返すトークンコントローラーがあります。

URL: http://localhost:3000/tokens.json

Body: email=example@example.com&password=foobar

Response: 
{
  "token": "xyzxyztoken"
}

このトークンが作成されると、サイトの他のセクションへのアクセスが許可され、これはテスト クライアント (RESTClient) で機能します。iOSでRESTKitを使用して接続するのにしばらく行き詰まりました。

AppDelegate.m で RKObjectManager を作成します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    RKURL *baseURL = [RKURL URLWithBaseURLString:@"http://localhost:3000"];
    self.objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];
    self.objectManager.client.baseURL = baseURL;

    return YES;
}

ビューコントローラーがあり、ボタンをタップすると次のように呼び出されます。

-(IBAction)btnLoginRegisterTapped:(UIButton*)sender
{
    // get the object manager
    RKObjectManager *objectManager = [RKObjectManager sharedManager];
    objectManager.serializationMIMEType = RKMIMETypeJSON;

    // set mapping
    RKObjectMapping *nameMapping = [RKObjectMapping mappingForClass:[Token class]];
    [nameMapping mapKeyPathsToAttributes:@"token", @"token", nil];
    [objectManager.mappingProvider setMapping:nameMapping forKeyPath:@""];

    // create url
    NSDictionary *queryParams;
    queryParams = [NSDictionary dictionaryWithObjectsAndKeys:@"example@example.com", @"email", @"foobar", @"password", nil];
    RKURL *URL = [RKURL URLWithBaseURL:[objectManager baseURL] resourcePath:@"/tokens.json" queryParameters:queryParams];

    [objectManager loadObjectsAtResourcePath:[NSString stringWithFormat:@"%@?%@", [URL resourcePath], [URL query]] delegate:self];
}

これは私のエラーです:

2013-01-10 16:32:55.554 MyApp[69314:14003] response code: 404
2013-01-10 16:32:55.555 MyApp[69314:14003] W restkit.network:RKObjectLoader.m:300 Unable to find parser for MIME Type 'text/html'
2013-01-10 16:32:55.555 MyApp[69314:14003] W restkit.network:RKObjectLoader.m:329 Encountered unexpected response with status code: 404 (MIME Type: text/html -> URL: http://localhost:3000/tokens.json?password=foobar&email=example%40example.com -- http://localhost:3000 -- http://localhost:3000)
2013-01-10 16:32:55.556 MyApp[69314:14003] Error: The operation couldn’t be completed. (org.restkit.RestKit.ErrorDomain error 4.)

これは簡単な質問かもしれませんが、迷っています。一般的に、iOSからのPOSTを理解していないと思います。おそらく注意すべきことの 1 つは、ブラウザーで /tokens.json を表示するとルーティング エラーが返されることです。これは、実際にはそのためのビューがないためです。

No route matches [GET] "/tokens.json"

とにかく、これらすべてのポイントは、ユーザーがログインしてトークンを保存し、それを使用して Rails アプリから他のデータにアクセスすることです。

さらに説明が必要な場合はお知らせください。

4

1 に答える 1

0

Rails アプリで、config/routes.rb を開きます。

追加

resources :tokens
于 2013-04-30T23:06:11.203 に答える