URL连接ios

时间:2012-01-23 03:05:46

标签: ios objective-c

我想创建从我的iPhone到我的网站的连接,我将在那里检索需要解析的数据。到目前为止,我没有任何运气,并且对于以下委托方法感到困惑:

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

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

-(void)connectionDidFinishLoading:(NSURLConnection *)connection

这些方法是从我的代码中调用的还是我手动需要调用它们?我是否需要在.h文件中的任何位置声明委托? 这就是我一直在做但没有运气的事情。如果有人可以解释它将不胜感激。它表示我的连接成功,但NSLog出现在控制台中,用于didFailWithError。

由于

-(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");
}

1 个答案:

答案 0 :(得分:1)

    //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];

}