如何在请求中使用get参数处理重定向URL?

时间:2012-05-11 10:35:37

标签: ios nsurl response.redirect

我正在尝试从服务器(aspx)获取html响应。

NSString *urlstr = [[NSString alloc] initWithFormat:@"http://www.someSiteThatRedirectsWithGetParameters.com?parameter1=1&parameter2=2"];

NSURL *url = [ NSURL URLWithString:urlstr];     
NSMutableURLRequest *urlRequest = [ NSURLRequest requestWithURL: url];

NSData data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];

NSURL *lastURL=[response URL];

NSLog(@"Last url %@", lastURL);

我将lastURL作为www.someSiteThatRedirectsWithGetParameters.com获取,因此无法获取原始请求网址的html页面。

为什么会这样,我该如何解决?

修改

这就是我到目前为止所做的一切:Get the last redirected url in iOS 5?  但我仍然无法达到我想要的目的,即:获取原始GET请求的html页面源(通过重定向)在url中有参数?

2 个答案:

答案 0 :(得分:1)

  

我将获得lastURL作为www.someSiteThatRedirectsWithGetParameters.com   因此没有得到原始请求的html页面   网址。

如果您的请求被重定向,那是因为您要连接的服务器告诉您第一次发出请求的URL上没有页面,您应该使用重定向的URL。这是重定向响应的重点。

如果您收到的回复是HTTP 303,则新请求将正确地从POST更改为GET。有时这样做是为了避免刷新页面重新提交原始请求而导致不良后果的情况。在这种情况下,您将请求发送到某个URL,服务器接受请求,但通过将客户端重定向到最终显示服务器响应的其他URL来响应。

  

为什么会这样,我该如何解决?

我已经解释了上面的'为什么'。 “解决方案”是接受来自服务器的响应,并按照重定向到包含服务器响应的URL。

答案 1 :(得分:0)

我会尝试发送两个请求的方法。发送第一个请求,然后redirectURL将是响应。然后创建响应的新URL,使用GET参数向该URL发送请求。我没试过,但我想它可以奏效。