【问题标题】:ASIHTTPRequest Get Request - Delegate Not Getting CalledASIHTTPRequest 获取请求 - 未调用委托
【发布时间】:2012-06-06 10:04:45
【问题描述】:

我的要求是

        NSURL *requestUrl = [NSURL URLWithString:url];

    if(request_) {
        [request_ setDelegate:nil];
        [request_ release];
    }
    request_ = [[ASIFormDataRequest requestWithURL:requestUrl] retain];
    [request_ setDelegate:self];
    [request_ setRequestMethod:@"GET"];
    [request_ setTimeOutSeconds:HTTP_TIME_OUT];
    [request_ startAsynchronous];

由于顶部栏上的网络访问指示器旋转并在几秒钟后消失,因此通话正在进行。但是任何一个委托方法

- (void)requestFinished:(ASIHTTPRequest *)request

- (void)requestFailed:(ASIHTTPRequest *)request

没有被调用。可能出了什么问题?

提前致谢。

PS:有时,由于某些问题,服务器返回“500 Internal Server Error”。但即使在那种情况下,委托也不应该

- (void)requestFailed:(ASIHTTPRequest *)request

被召唤?

【问题讨论】:

  • 使用 NSLog 打印一些值。你也实现了类中的方法吗?当您将委托分配给自己时,应该在同一类中定义方法。
  • 我已经实现了它们。这就是我能够知道那些没有被调用的方式.. :) :)

标签: ios cocoa-touch ios4 xcode4.2 asihttprequest


【解决方案1】:

确保您的课程符合ASIHTTPRequestDelegate 协议。

@interface YourClass : ... <ASIHTTPRequestDelegate>

【讨论】:

  • 是的..仍然没有调用:(
【解决方案2】:

您可以使用积木来检查。

这里是同样的例子:

 NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
   __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
   [request setCompletionBlock:^{
      // Use when fetching text data
      NSString *responseString = [request responseString];

      // Use when fetching binary data
      NSData *responseData = [request responseData];
   }];
   [request setFailedBlock:^{
      NSError *error = [request error];
   }];
   [request startAsynchronous];

我希望这可能会有所帮助。

【讨论】:

  • 谢谢老兄。那一个间接地帮助我找出问题所在。我在代码的其他部分使委托为零。
  • 我遇到了同样的问题,但是切换到块而不是实现 ASIHTTPRequestDelegate 并使用委托方法对我有所帮助。我仍然不知道为什么,我有一个旧版本的应用程序,其中完全相同的代码与代表一起工作..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
相关资源
最近更新 更多