PDA

View Full Version : Xcode/Cocoa newbie problem capturing URL of a 307 redirect




steveclv
Jul 17, 2009, 01:17 AM
I'm a complete newbie at Cocoa but having a go anyway :)

I have an Xcode/Cocoa app that is reading a web URL and extracting the data which it then parses, however the info that is needed is now contained within the URL of a redirection page - not in the content of the new page itself.

So for example I originally read http://www.mydomain.com and in the content of that page is a parameter called Fred=66 that was parsed out.

Now, http://www.mydomain.com redirects to http://www.mydomain.com/?fred=66 using a 307 redirect.

The code is currently

NSString* reply = [[NSString alloc] initWithData: data encoding: NSASCIIStringEncoding];
NSArray* parts = [reply componentsSeparatedByString:@": "];
NSEnumerator* e = [parts objectEnumerator];
NSString* s;

Followed by the parsing code.

But how can I change this to read the URL of the new redirected page and not it's contents?

Any hints or advice appreciated!



kainjow
Jul 17, 2009, 09:03 AM
Use NSURLConnection and the connection:willSendRequest:redirectResponse: delegate method to get the redirect URL.

steveclv
Jul 17, 2009, 10:04 AM
Thanks!

The code I am using is

- (void) parseGwIdData:(NSURLRequest *)connection:(NSURLConnection *)connection
willSendRequest:(NSURLRequest *)request
redirectResponse:(NSURLResponse *)redirectResponse
{
NSURLRequest *newRequest=request;
if (redirectResponse) {
newRequest=nil;
}
return newRequest;
}

and I am calling parseGwIdData as follows

[self getGwIdFrom:@"http://mydomain.com"];

However when building I am getting a fatal error saying "error: conflicting type for connection"

In the call to getGwIdFrom do I need to do something to the URL and if so what?

Thanks for your help on this - it's a steep learning curve !