我正在使用restkit构建一个应用程序来与我的webservice交谈。首先,我对此非常陌生。我需要做的是将用户名和密码发布到我的web服务,以便网址看起来像这样。
http://urllinkcompany.com/en/webservice/company-user/login/apikey/key12345678?email=test@test.be&pwd=testtest
当我发布这个时,我得到了一个json。这个json包含一个状态代码。 status = 200 --> OK
Status = 404 --> NOT ok
现在我尝试发布一些东西和NSLog这个状态代码。
- (IBAction)login:(id)sender {
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Person class]];
[mapping addAttributeMappingsFromDictionary:@{
@"data.user.cu_email": @"cu_email",
}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:nil keyPath:nil statusCodes:nil];
NSString *baseUrl = @"http://urllinkcompany.com/en/webservice/company-user/login/apikey/key12345678?";
NSString *strUrl = [NSString stringWithFormat:@"%@email=%@&pwd=%@",baseUrl,_txtLogin.text,_txtPass.text];
NSURL *url = [NSURL URLWithString:strUrl];
NSLog(@"url is: %@",strUrl);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]];
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
NSLog(@"data result is %@", [result valueForKeyPath:@"data.status"]);
} failure:nil];
}
但我收到了这个错误。
E restkit.network:RKObjectRequestOperation.m:285 Object request failed: Underlying HTTP request operation failed with error: Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x1ed57c50 {NSUnderlyingError=0x20161e70 "bad URL", NSLocalizedDescription=bad URL}
2013-01-07 11:48:51.407 Offitel2[22086:907] I restkit.network:RKHTTPRequestOperation.m:152 GET '(null)'
2013-01-07 11:48:51.408 Offitel2[22086:907] E restkit.network:RKHTTPRequestOperation.m:173 GET '(null)' (0) [0.0010 s]: Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x1ed57c50 {NSUnderlyingError=0x20161e70 "bad URL", NSLocalizedDescription=bad URL}
有人可以帮我吗?
亲切的问候
答案 0 :(得分:0)
编辑: 这是没有RKClient的版本
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:[NSURL URLWithString:@"http://urllinkcompany.com/"]];
RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Person class]];
[mapping addAttributeMappingsFromDictionary:@{
@"data.user.cu_email": @"cu_email",
}];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:_txtLogin.text, @"email", _txtPass.text, @"pwd", nil];
[objectManager loadObjectsAtResourcePath:@"en/webservice/company-user/login/apikey/key12345678" delegate:self block:^(RKObjectLoader* loader) {
loader.objectMapping = mapping;
loader.method = RKRequestMethodPOST;
loader.params = params;
}];
并实现这两个RKObjectLoaderDelegate方法:
- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error