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发出请求并解释你的反应。