Прочитать всю html-строку Asyncsocket iOS

Привет, я хочу прочитать с сервера весь html, а не только запрос типа «HTTP/1.1 200 OK». Я имею в виду и html-код. Но я не знаю как. Я использую библиотеку Asyncsocket из "https://github.com/roustem/AsyncSocket, у кого-то есть идея, как я могу справиться с этим? я использовал функцию

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

но данные короткие и показывают мне только HTTP-запрос.

Спасибо


person J0k3R    schedule 28.02.2013    source источник
comment
Этот метод вызывается более одного раза? Вы уверены, что запрос, который вы отправляете, действительно производит какой-либо вывод HTML?   -  person trojanfoe    schedule 28.02.2013
comment
да, я уверен, что отправляю с веб-сервера arduino, который я тестировал в своем обычном браузере   -  person J0k3R    schedule 28.02.2013


Ответы (2)


Я предполагаю, что вы вызываете readDataToData:timeout:tag:, используя CRLF в качестве разделителя. Это вернет вам одну строку данных. Что вам нужно, так это прочитать достаточно заголовков, чтобы определить, какой длины должны быть данные ответа, а затем вызвать readDataToLength:timeout:tag: или дождаться закрытия соединения и вызвать unreadData, чтобы получить все, что сервер отправил при закрытии соединения.

Спецификация HTTP описывает, как определить длину сообщения: http://tools.ietf.org/html/rfc2616#section-4.4

person Donovan Voss    schedule 28.02.2013
comment
Хорошо, теперь я понимаю, что вы имеете в виду, но как я могу найти длину? я использовал NSData *data = [AsyncSocket CRLFData]; а затем readDataToLength: [длина данных], но это не работает... - person J0k3R; 01.03.2013
comment
Вам нужно вызывать readDataToData с CRLFData, пока вы не получите все заголовки HTTP. Затем вам нужно интерпретировать заголовки. Один из них скажет вам, какова длина части данных (после заголовков). Затем вы вызываете readDataToLength с этой длиной. См. ссылку ietf.org, которую я вам отправил. - person Donovan Voss; 01.03.2013

Лучшим ответом может быть использование NSURLConnection, чтобы сделать запрос и интерпретировать ответ для вас.

person Donovan Voss    schedule 28.02.2013