Teddy13
Teddy13

Reputation: 3854

URL Connection ios

I want to create connection from my iphone to my website where I will be retrieving data that needs to be parsed. I am not having any luck so far and am kind of confused in regard to the following delegate methods:

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data

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

-(void)connectionDidFinishLoading:(NSURLConnection *)connection

Are these methods called upon there own from my code or do I manually need to call them? Do I need to declare a delegate anywhere in my .h file? This is what I have been doing but have had no luck. If anyone can explain it would be appreciated. It says my connection is successful made but the NSLog comes up in the console for didFailWithError.

Thanks

-(void) data: (id) sender
{
    NSString *stringToBeSent;
    NSURL *siteWithNumbers;
    NSString *translation;
    NSError *error;
    NSString *boo;

    sender= [sender lowercaseString];
    sender= [sender stringByReplacingOccurrencesOfString:@"," withString:@""];


    receivedData= [[NSMutableData alloc] init]; //declared in .h file as NSMutableData

    stringToBeSent= [[NSString alloc] 
     initWithFormat:@"http://xxxx/sql.php? data=%@",sender];

    NSURLRequest *theRequest=[NSURLRequest 
        requestWithURL:[NSURL URLWithString:stringToBeSent]];
    NSURLConnection *conn= [[NSURLConnection alloc]
        initWithRequest:theRequest delegate:self];

   //[self createConnectionWithPath:stringToBeSent];

    if(conn)
    {
        NSLog(@"Connection Successful");
    }
    else
    {
        NSLog(@"Connection could not be made");
    }
}


- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    /* appends the new data to the received data */
   NSLog(@"here now1");
   [self.receivedData appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)conn
{
    NSString *stringData= [[NSString alloc] 
                       initWithData:receivedData encoding:NSUTF8StringEncoding]; 
    NSLog(@"Got data? %@", stringData);

    [conn release];
    conn = nil;
}

- (void)connection:(NSURLConnection *)
     connection didFailWithError:(NSError *)error  
{
    NSLog(@"fail");
}

Upvotes: 1

Views: 4553

Answers (1)

A R
A R

Reputation: 461

    //in .h file    
    @interface yourViewController : UIViewController<NSURLConnectionDelegate>
        {
            NSMutableData *responseData;
        }

    // in .m file

-(void) data: (id) sender
{
NSString *strWithURL = [NSString stringWithFormat:@"%@%@",TownsServiceURL,state];

    strWithURL = [strWithURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"strConfirmChallenge=%@",strWithURL);

    NSURL *myURL = [NSURL URLWithString:strWithURL];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL
                                                           cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                       timeoutInterval:60];

    [NSURLConnection connectionWithRequest:request delegate:self];
}


//Delegate methods

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    responseData = [[NSMutableData alloc] init];

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [responseData appendData:data];
}

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

    NSLog(@"Connection failed with error: %@", [error localizedDescription]);


    UIAlertView *ConnectionFailed = [[UIAlertView alloc]
                                     initWithTitle:@"Connection Failed"
                                     message: [NSString stringWithFormat:@"%@", [error localizedDescription]]
                                     delegate:self
                                     cancelButtonTitle:@"Ok"
                                     otherButtonTitles:nil];
    [ConnectionFailed show];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *s = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding];

}

Upvotes: 2

Related Questions