我正在使用 facebook 最新的 iphone sdk,我正在从我的应用程序的不同位置向 facebook 发出多个请求。对于他们所有的 didReceiveResponse 和 didLoad 方法都被调用,很难从 didLoad 方法中找出这个响应是什么请求所以我想知道 didReceiveResponse 是否可以提供帮助,我可以在这个方法中检索一些信息来告诉我什么是我得到响应的请求。
问问题
3610 次
4 回答
1
我这样做的方式和紫敏机的做法差不多,但是在 didLoad 方法中:
- (void)request:(FBRequest *)request didLoad:(id)result
{
NSLog(@"Facebook request %@ loaded", [request url]);
//handling a user info request, for example
if ([[request url] rangeOfString:@"/me"].location != NSNotFound)
{
/* handle user request in here */
}
}
所以基本上你只需要检查你发送请求的url,你也可以检查那个请求的参数。然后,您可以区分一个与另一个。
于 2012-03-28T20:18:21.580 回答
0
我在这里所做的只是检查响应中的一些独特属性并将其与请求相关联,我知道这不是最好的方法,但这是我迄今为止发现的,请告诉我是否任何人都在做任何不同的事情
于 2011-03-07T03:09:54.437 回答
0
您可以尝试以下方法:
- (void) request: (FBRequest *)request didReceiveResponse: (NSURLResponse *)response {
NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
if (statusCode == 200) {
NSString *url = [[response URL] absoluteString];
if ([url rangeOfString: @"me/feed"].location != NSNotFound) {
NSLog(@"Request Params: %@", [request params]);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Facebook" message: @"Message successfully posted on Facebook." delegate: nil cancelButtonTitle: @"OK" otherButtonTitles: nil];
[alert show];
[alert release];
}
}
}
于 2011-03-10T06:34:00.343 回答
0
如果在创建请求对象时将请求对象保留为请求委托的属性,则可以检查它是否与委托方法调用匹配。例如:
- (void)queryForUserInfo {
self.userInfoRequest = [facebook requestWithGraphPath:@"me" andDelegate:self];
}
#pragma mark <FBRequestDelegate>
- (void)request:(FBRequest *)request didLoad:(id)result {
if (request == self.userInfoRequest) {
[self handleUserInfoResult:result];
}
}
于 2012-02-27T16:52:56.253 回答