Правильная обработка перенаправлений с NSURLConnection
Для целей этого я собираюсь притвориться, что исходный URLhttp://host/form
и новый URLhttps://host/form
, (Обратите внимание, что до того, как я отправлю это, оба URL-адреса будут безопасными. Однако небезопасный к безопасности кажется удобным перенаправлением, чтобы проверить это.)
Я получаю доступ к веб-API с помощьюNSURLConnection
это перенаправляет меня В основном, я хочу взять все, что я только что представилhttp://hostaform
и повторно отправить егоhttps://host/form
, Я думал, что это будет поведение по умолчанию, но похоже, что тело теряется в перенаправлении.
Так что я думаю, что мне нужно справиться сconnection:willSendRequest:redirectResponse:
событиеNSURLConnection
делегировать и заново прикрепить тело. Проблема в том, что это сообщение выглядит ужасно недокументированным. Единственная информация, которую я могу найти по этому методу,Ссылка класса NSURLConnection, что не очень полезно. Среди прочего, это включает в себя следующее:
Я не уверен, что это значит. В сочетании с начальнымwillSendRequest:
заклинание, я думаю, что это означает,willSendRequest:
отправляется даже для моего первоначального запроса, до ответа перенаправления. Это правильно?
Поэтому я добавил в свой делегат код для дополнительного сохранения тела и добавилwillSendRequest:
ч, Andler:
- (NSURLRequest *)connection: (NSURLConnection *)inConnection
willSendRequest: (NSURLRequest *)inRequest
redirectResponse: (NSURLResponse *)inRedirectResponse;
{
if (inRedirectResponse) {
NSMutableURLRequest *r = [[inRequest mutableCopy] autorelease];
[r setURL: [inRedirectResponse URL]];
[r setHTTPBody: body];
return r;
} else {
return inRequest;
}
}
Не работает Но я даже не уверен, что это правильный подход. Это кажется чрезмерно хакерским для меня. Что мне делать? Это где-нибудь задокументировано? Пока что я не нашел ничего полезного в документации Apple или использовании Google.
(Это на iPhone, хотя в этих классах нет особой разницы.)