Carol Smith
Carol Smith

Reputation: 199

IOS 7 how to print the url response data

I am trying to call a web service. I tried this

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.75.1:8082/projectname/public/tests"]];
    NSURLSessionConfiguration *configuration = [ NSURLSessionConfiguration ephemeralSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
    NSURLSessionDownloadTask *task = [session downloadTaskWithRequest:request completionHandler:^(NSURL *localFile, NSURLResponse *response, NSError *error) {
        if(!error){
            NSLog(@"no error");

        }else{
            NSLog(@"error");
        }
    }];
    [task resume];
}

as you see there are two nslog statements. I got the no error one.

when I call that web service from my safari, I got a simple string which is index printed in the browser, how can I see that string in my xcode please?

Thanks

Upvotes: 0

Views: 2549

Answers (3)

holex
holex

Reputation: 24031

what I would do If I were you is:

NOTE: it is based on you said you receive a simple string only from your back-end. if that is not a simple string, you may need to revise the –connectionDidFinishLoading: method's body.

.h

@interface UIRandomViewController : UIViewController {

    NSURLConnection *_urlConnection;
    NSMutableData *_receivedData;

    // ...

}

// ...

@end

.m

@implementation UIRandomViewController {

    // ...

    - (void)viewDidAppear:(BOOL)animated {
        [super viewDidAppear:animated];

        NSURLRequest *_request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.75.1:8082/projectname/public/tests"]];
        _urlConnection = [[NSURLConnection alloc] initWithRequest:_request delegate:self startImmediately:TRUE];

        // ...

    }

    // ...

    #pragma mark - <NSURLConnectionDelegate>

    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
        _receivedData = nil;
    }

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        if (_receivedData == nil) _receivedData = [NSMutableData dataWithData:data];
        else [_receivedData appendData:data];
    }

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
        NSString *_receivedString = [[NSString alloc] initWithData:_receivedData encoding:NSUTF8StringEncoding];
        // hello beautiful...
        NSLog(@"received data : %@", _receivedString);
    }
}

@end

Upvotes: 1

Dheeraj Kumar
Dheeraj Kumar

Reputation: 441

you can implement the delegate method

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location;

EDIT

Try This

NSHTTPURLResponse *response = nil;
NSError *error = nil;

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL      URLWithString:YOUR URL]];
NSData *respData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"~~~~~ Status code: %d", [response statusCode]);
//Print your recived data here..
NSString *str = [[NSString alloc] initWithData:respData encoding:NSUTF8StringEncoding];
NSLog(@"str: %@", str);

Upvotes: 2

BalaChandra
BalaChandra

Reputation: 652

You can use the delegate methods. When a NSURLSessionDownlaodTask is completed, it's delegates will be called if your class confirmed to it.

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location

you can get your response by parsing the data in that delegate method. It will tell you the location that the URLSession stores the downloaded result.

Upvotes: 1

Related Questions