ASIHTTPRequest с UIWebView - PullRequest
       2

ASIHTTPRequest с UIWebView

0 голосов
/ 15 сентября 2011

Мне нужно подключиться к защищенному сайту и попытаться использовать ASIHTTPRequest

Вот мой код:

url = [NSURL URLWithString:@"http://myurl/page.aspx"];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setUsername:username];
[request setPassword:password];
[request setDomain:domain];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
    [webView loadHTMLString:[request responseString] baseURL:[request url]];
    }

Когда я использую NSLog, чтобы увидеть [request responseString], я получаюверный HTML, но в результате получается пустой белый вид.Из предупреждений об исходящем запросе, которые отображает небольшая стукачка, я вижу первоначальный запрос, который отправляется на внешний ресурс.

Пока что я предполагаю, что исходный запрос правильно использует аутентификацию из ASIHTTPRequest и выбирает страницу, ноuiwebview попытается загрузить включенные файлы .js, и, поскольку uiwebview не выполняет аутентификацию, он вообще не будет отображать страницу ...

Кто-нибудь знает, как решить мою проблему?

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Вы пробовали ASIWebPageRequest ?Я думаю, у вас есть ресурсы на этой странице, которые не загружаются, как http://myurl/image.jpg

0 голосов
/ 15 сентября 2011

ASIHttpRequest работает асинхронно.Вы должны поместить свой код загрузки веб-просмотра в обратные вызовы ASIHTTPRequest.(requestFinished).

Добавьте метод в ваш класс следующим образом:

- (void)requestFinished:(ASIHTTPRequest *)request
{
    NSError *error = [request error];
    if (!error) {
        [webView loadHTMLString:[request responseString] baseURL:[request url]];
    }
}

Существует также метод requestFailed, который вы можете использовать для перехвата дополнительных ошибок, вы должны также реализовать это.Один или другой из этих методов будет вызван после завершения ASIHttpRequest.

Обратите внимание, что вам, вероятно, также потребуется установить делегат для запроса перед выполнением асинхронного вызова.(то же самое место, где вы устанавливаете аутентичный материал).

request.delegate = self;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...