我每次请求服务器时都需要在http标头中发送一些数据(连接和发布方法).我正在使用restkit的RKObjectManager.我还需要服务器返回的检查状态(401,200,404等).有人知道解决方案吗?
谢谢!
我通过RKObjectManager发送一个对象:
[[RKObjectManager sharedManager] postObject:myObject delegate:delegate];
Run Code Online (Sandbox Code Playgroud)
映射和路由已经配置,并且可以成功运行.它发送一个json,服务器收到请求,但我有一个问题.在IOS方面,我如何打印发送到服务器的json.
我对使用restkit的方式感到有些困惑,似乎有多种方法可以做同样的事情,在我满足之前只是弄乱它直到它工作,但现在他已经改变了框架和使用在0.20 .x,我花了很多时间来转换我的代码,现在花费更多的时间试图让它像以前一样工作.我已经仔细研究了一些例子和那些人们声称为他们工作的例子,对我来说没那么多,所以某处肯定会有所不同,所以也许有人可以告诉我以下方面的不同之处得到这个数据至少例如1和2(失败,但这是关于restkit github的问题)
response.body={
"player": [
{
"_id": "50585c86ded998e77a000002"
}
]
}
Run Code Online (Sandbox Code Playgroud)
1.
[[RKObjectManager sharedManager].router.routeSet addRoute:[RKRoute routeWithClass:[Player class] pathPattern:@"player/fbid/:fID" method:RKRequestMethodGET]];
Run Code Online (Sandbox Code Playgroud)
为了得到你的播放器,这样的事情:
Player *player = [Player new];
player.playerID = 2;
[[RKObjectManager sharedManager] getObject:player path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *result)
{
// Request
} failure:nil];
Run Code Online (Sandbox Code Playgroud)
2.
使用响应描述符就像这样.
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:playerWtfMappingIn pathPattern:nil keyPath:@"player" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];
[tempPlayer setFbID:[result objectForKey:@"id"]];
[objectManager getObject:tempPlayer path:nil parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
{
}
failure:nil];
Run Code Online (Sandbox Code Playgroud)
3.
或者实际上在RestKit维基上自行解雇
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:articleMapping pathPattern:nil keyPath:@"articles" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
NSURL *URL = [NSURL URLWithString:[@"some-address"]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
RKObjectRequestOperation *requestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:[self.objectManager responseDescriptors]];
[requestOperation start];
[requestOperation waitUntilFinished];
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
Object request failed: Underlying HTTP request operation failed with error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {(
"application/x-www-form-urlencoded",
"application/json"
)}, got text/plain" UserInfo=0x1f5e3c40 {NSLocalizedRecoverySuggestion={"total_rows":16,"offset":1,"rows":[
{"id":"1","key":1,"value":{"_id":"1","_rev":"1-e75042683867a7030fc4d3aa3b72ef35",
"user":{
"userId":"1",
"name":"A",
.......
]}}, .....
Run Code Online (Sandbox Code Playgroud)
当响应采用Json格式时,为什么会出现此错误?
我使用RestKit与REST api进行交互.对于某些操作,例如HTTP PUT/POST/DELETE,我只关心响应状态代码(200或500等),并且不关心响应数据,即使API确实发送回数据.
出于性能考虑,有没有办法配置RestKit以避免映射响应?似乎如果我没有设置响应描述符,我收到错误"没有响应描述符匹配响应加载"
我对RestKit完全不熟悉并且在某种程度上挣扎.
JSON:
{
"teams": [
{
"id": 1,
"name": "Team A"
},
{
"id": 2,
"name": "Team B"
}
],
"users": [
{
"id": 1,
"name": "cameron",
"teamId": 1
},
{
"id": 2,
"name": "paul",
"teamId": 2
}
]
}
Run Code Online (Sandbox Code Playgroud)
CoreData:
@interface Team : NSManagedObject
@property (nonatomic, retain) NSNumber * teamId;
@property (nonatomic, retain) NSString * name;
@end
@interface User : NSManagedObject
@property (nonatomic, retain) NSNumber * userId;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Team * team; …Run Code Online (Sandbox Code Playgroud) 因此,我试图与时俱进,并使用AFNetworking 2.0中提供的一些新功能.但是,我也使用RestKit 0.20将AFNetworking 1.3作为依赖?我允许将AFNetworking 1.3和2.0合并到我的Xcode项目中,还是只能选择一个?这有一个CocoaPod技巧吗?
我在Objective-C项目中使用RestKit,需要为我的服务调用指定超时大约10秒.
阅读后,它看起来不像RestKit支持这一点,所以我的计划是:
这是我的问题......
如果定时器方法触发,我需要取消请求并手动调用下面的方法.我不是百分百肯定如何实现这一目标.
在我的另一个问题中有一些上下文,展示了如何在我的项目中实现RestKit以及它在这种情况下正在做什么.
非常感谢您提供的任何帮助.
- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error {
NSLog(@"Hit error: %@", error);
}
Run Code Online (Sandbox Code Playgroud) 我是RestKit的新手.有兴趣了解两者之间的差异,哪种情况更适合使用.
我安装了cocoapods的预发布版本,0.26,并尝试安装最新版本的RestKit.在我,podfile我打开use_frameworks!国旗迫使cocoapods使用动态框架.
把import RestKit我的SWIFT文件将导致生成失败:'RKValueTransformers.h' file not found.RestKit设置为使用少数其他库并将其标题包含在项目中(AFNetworking,RKValueTransformers,TransitionKit等)
根据cocoapod作者的一篇文章,我认为问题在于导入和包含这些库的方式需要改变以适应动态框架和cocoapods.无论是自动生成的伞文件需要导入这些文件可使用或者可RestKit需要使用导入这些库@import RKValueTransformers或#import <RKValueTransformers/RKValueTransformers.h>.
我不是Objective C,Cocoapods或RestKit的专家,所以想看看是否有人有这个工作,我做错了什么或者是否需要对RestKit进行更改.
restkit ×10
ios ×6
restkit-0.20 ×3
afnetworking ×2
cocoapods ×2
objective-c ×2
cocoa-touch ×1
json ×1
swift ×1
xcode ×1