Pergunta

Eu uso o seguinte código:

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSHTTPURLResponse *)response {
NSLog(@"Received redirect Response: %@ %@", [response allHeaderFields], [NSHTTPURLResponse localizedStringForStatusCode:[response statusCode]]);
return request;
}

Quando recebo um 302 com os seguintes dados do cabeçalho:

< HTTP/1.1 302 Found  
< Date: Wed, 03 Mar 2010 07:47:17 GMT  
< Server: lighttpd/1.4.19  
< Content-length: 0  
< Content-type: text/html;charset=utf-8  
< Location: `<new Location>`  
< Vary: Accept-Encoding  

Esta é a saída no console do GDB:

2010-03-03 08: 42: 03.265 MyProg [68106: 207] Recebeu resposta de redirecionamento: (nulo) Erro do servidor 2010-03-03 08: 42: 14.414 MyProg [68106: 207] Redirect Response: {{
Conexão = "Keep-alive";
"Codificação de conteúdo" = gzip;
"Length-comprimento" = 20;
"Content-type" = "text/html; charset = utf-8";
DATE = "Qua, 03 de março de 2010 07:42:10 GMT";
"Keep-alive" = "Timeout = 15, max = 100";
Localização = "<new Location>";
Server = "LightTPD/1.4.19";
Vary = "aceitar o codificação"; } encontrado

Ao usar o CURL, só recebo uma resposta e tracedump diz o mesmo, então tenho certeza de que o servidor envia apenas um redirecionamento.
Por que esse seletor é chamado duas vezes?

Foi útil?

Solução

connection:willSendRequest:redirectResponse: é chamado antes de cada solicitação, por isso é chamado uma vez na solicitação original, que não foi um redirecionamento, portanto a resposta é nula; Em seguida, é chamado ao carregar o alvo de redirecionamento, onde a resposta é a resposta 302 à solicitação inicial.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top