iOS 新手... 我有一个使用 token_authenticable 设置的 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 发布。可能要注意的一件事是,在浏览器中查看 /tokens.json 会返回一个路由错误,因为我实际上并没有对此的看法:
No route matches [GET] "/tokens.json"
无论如何,这一切的重点是让用户登录并获取存储的令牌,然后使用它从 rails 应用程序访问其他数据。
如果需要更多说明,请告诉我。