我想回复状态为id的twitter状态。但我得到http响应403。 在这里我的代码。我可以发送第一条推文。我明白了。但是,当我想要发送第一条推文的回复时,我会得到http响应403.我错了。
- (IBAction)btnSendToucUpInside:(id)sender {
__block NSDecimalNumber *tid;
__block int i = 0;
while (true) {
if (i == 0 || _birlestirilsinMi) {
urlParametres = [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat:@"%@", [self.twitArray objectAtIndex:0]], @"status", nil];
}else{
urlParametres = [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat:@"%@", [self.twitArray objectAtIndex:0]], @"status",[NSString stringWithFormat:@"%@",tid], @"in_reply_to_status_id",@"true", @"include_entities", nil];
}
TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"https://api.twitter.com/1/statuses/update.json"] parameters:urlParametres requestMethod:TWRequestMethodPOST];
[postRequest setAccount:[twitAccountArray objectAtIndex:0]];
[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
{
if (responseData) {
i++;
NSDictionary *TWData = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];
tid = TWData[@"id"];
NSLog(@"%@",tid);
//show status after done
NSString *output = [NSString stringWithFormat:@"HTTP response status: %i", [urlResponse statusCode]];
NSLog(@"Twiter post status : %@", output);
}
}];
if (i == _twitArray.count -1) {
break;
}
}
}
答案 0 :(得分:0)
您正在向Twitter重复发送相同的消息,您的循环不稳定且未正确使用您的twitArray
变量。在构建twitArray
实例时,请确保使用TWRequest
。你需要这样的东西:
for (NSString *twit in twitArray) {
...
urlParametres = @{ @"status" : twit }
...
}
而不是在每次迭代时使用[self.twitArray objectAtIndex:0]
......
另请注意TWRequest
:TWRequest is deprecated in iOS 6.0 - what can I use instead?
有点偏离主题,但是while(true)
+ break
是一种非常糟糕的做法,几乎和使用goto
一样糟糕,你绝对应该使用类似的东西:
for (NSString *twit in twitArray) {...}
或者如果您需要逆序:
for (NSString *twit in twitArray.reverseObjectEnumerator) {...}