connection:didReceiveData未被调用

时间:2012-06-07 17:58:14

标签: objective-c ios5 nsurlconnection xcode4.3

我在NSURLConnection中遇到问题。我的didRecieveData方法没有被调用。我不知道是什么问题。我也经历了几乎所有以前的问题,但似乎没有解决。

请帮帮我。 这是我的代码。

      -(void)gettheJSONdata
     {
           NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:_serverAddress cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

           [request setHTTPMethod: @"GET"];

           NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

          NSLog(@"This is displayed");
     }

     -(void)connection:(NSURLConnection*)connection didReceiveData:(NSData *)data
     {
           NSLog(@"This is not displayed.");
           AppAppDelegate *JSONdata = (AppAppDelegate*)[[UIApplication sharedApplication] delegate];

           JSONdata.userloginJSONdata = [[NSData alloc] initWithData:data];

           NSError *error;

          _result = [NSJSONSerialization JSONObjectWithData:JSONdata.userloginJSONdata options:NSJSONReadingMutableContainers error: &error];

           NSString *test = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
           NSLog(@"Json data : %@",test);
     }

     -(void) connectionDidFinishLoading:(NSURLConnection*) connection
     {
           AppAppDelegate *resultofJSONdata = (AppAppDelegate*)[[UIApplication sharedApplication] delegate];

           resultofJSONdata.JSONdataresult = _result;
      }

3 个答案:

答案 0 :(得分:0)

您没有启动请求。你需要:

[connection start];

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

编辑:我的评论下面的方法名称不正确。尝试实施两者:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

看看其中任何一个是否被击中。

答案 1 :(得分:0)

最后我解决了这个问题。 我没有合成JSONdataresult。

我没有意识到这可能会导致NSURLConnection出现问题。

答案 2 :(得分:0)

在我的案例标题中没有连接didReceiveData没有被调用,如果请求需要,请务必添加授权,

    [urlRequest setValue:[UserContext sharedInstance].requesthandler.reqHeader forHTTPHeaderField:@"Authorization"];