Предотвращение ASIHTTPRequest от следования HTTP 303 См. Другой - PullRequest
0 голосов
/ 16 июня 2011

Я пишу приложение для iPhone, используя библиотеку ASIHTTPRequest (http://allseeing -i.com / ASIHTTPRequest /) для взаимодействий REST с сервисами RESTful веб-приложения.

В настоящее время я сталкиваюсь с ошибкой, когда яЯ получаю 200 OK с одной из этих страниц, но тела нет.Кроме того, я заметил, что заголовки остаются пустыми после того, как запрос был выполнен, но заголовки заранее не были пустыми (они были заполнены аутентификацией OAuth).

Из-за слишком сложной настройки сети / прокси яудалось проверить, что я получаю 303 (как и ожидалось) и что ASIHTTPRequest следует этому запросу (как и ожидалось).Однако, поскольку мне нужно пересоздать мои заголовки аутентификации OAuth, чтобы службы RESTful предоставили мне нужную информацию, мне нужно запретить ASIHTTPRequest следующие 303 с, и вместо этого просто вернуть 303, чтобы я мог прочитатьсам заголовок Location и создаю новый запрос с соответствующими заголовками OAuth.

Если кто-то должен был сделать это, пожалуйста, дайте мне знать, как вы это сделали!

Спасибо, Тайлер

Погружается с трамплина в NSAutoreleasePool

1 Ответ

2 голосов
/ 16 июня 2011

Вы можете проверить свой статус HTTP в request:didReceiveResponseHeaders: методе делегата.Вот код:

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders {
    if(request.responseStatusCode == 303) {
        [request cancel];
    }
}

- (void)requestFailed:(ASIHTTPRequest *)request {
    if(request.responseStatusCode == 303) {
            // here you can call your custom methods
        }
}

Он отменит ваше соединение, как только получит заголовки HTTP, поэтому не будет загружать всю страницу.

...