0

嗨我想從服務器讀取整個HTML不僅像 「HTTP/1.1 200 OK」 我的意思是html代碼。 但我不知道如何。 我正在使用來自「https://github.com/roustem/AsyncSocket」的Asyncsocket庫有一個人的想法我該如何處理? 我使用的Funktion讀取整個html字符串Asyncsocket iOS

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

但數據是短期和告訴我只有http請求。

感謝

+0

該方法是否被多次調用?您確定您發送的請求實際上是否生成任何HTML輸出? – trojanfoe 2013-02-28 16:09:35

+0

是的,我相信我從一個arduino網絡服務器發送我測試我的正常瀏覽器 – J0k3R 2013-02-28 17:16:45

回答

0

我猜想,您正在使用CRLF作爲分隔符調用readDataToData:timeout:tag:。這將返回一行數據。你想要的是讀取足夠的標題來告訴響應數據應該多長時間,然後調用readDataToLength:timeout:tag:,或者等待連接關閉,並調用unreadData以獲取服務器在關閉連接時發送的所有內容。

HTTP規範描述瞭如何確定消息的長度:http://tools.ietf.org/html/rfc2616#section-4.4

+0

好吧現在我知道你的意思,但我怎麼找到長度?我用「NSData * data = [AsyncSocket CRLFData];」然後readDataToLength:[數據長度]但它可以工作... – J0k3R 2013-02-28 22:09:57

+0

您需要使用CRLFData調用readDataToData,直到獲得所有HTTP標頭。然後你需要解釋標題。其中一個會告訴你數據部分(頭部之後)的時間。然後你用這個長度調用readDataToLength。請參閱我發給您的ietf.org鏈接。 – 2013-02-28 22:46:00

0

一個更好的答案可能是使用NSURLConnection發出請求並解釋你的反應。