非常感谢答复。 我在这里停留。 可以请你这种情况帮助吗? CFHTTPStream可以将解决这个问题呢? 是否有任何其他的方式解决这个问题的工作? 谢谢。
嗨,
我连接到一个HTTP URL使用NSURLConnection的。 我应该得到一些时间间隔后响应(响应是没有得到来自服务器关闭)。 是否可以读取这些时,他们都写responsed就像具有无限,而在Java中的HTTP URL连接的输入流循环。 该didReceiveData方法是没有得到调用。
把它作为HTTP推送,其中响应将根据其对服务器的可用性写入。
我应该能够连接到服务器和保持连接,直到我不要关闭该连接。
感谢帮助。
我敲我的头靠在这个墙上为好,但我发现了一个解决方案:
NSURLConnection
似乎缓冲了数据,但你可以通过设置在响应头的内容类型绝招吧。 通过设置内容类型"text/json"
例如,我可以从响应服务器发送只有几个字节,而无需关闭流,并获得didReceiveData
回调方法给我的数据。
在此之前,我不得不垫我的4K左右的回调命中响应。
谢谢您的回复。 不过,我想清楚了一些事情......我可以看到服务器写入的数据,但我didReceiveData方法不获取调用。 另外,connectionDidFinishLoading不叫。 委托设置正确。 我想举的例子。 我怎样才能读取该示例(URL)发送的响应。[我的应用程序需要的功能相同。] http://www.servlets.com/jservlet2/examples/ch06/servlet/Countdown它发送应答像10,9%,8 ,7,6 .....&然后是一个图像。 我们可以看到这是浏览器。 但是,当我试图通过代码来连接和得到回应,我得到响应,只有当倒计时结束与太数据量非常大(我认为图像数据)。 我怎样才能阅读时,他们被送到前面的小的反应?
感谢帮助。
NSURLConnection的不保持连接活着,直到永远。 它有一个超时,如果没有数据是超时时间内收到,再次关闭连接。
如果您发送该请求,并没有从服务器回来,因为没有目前掌握的数据,但预计它不叫,是不是 - 当实际有数据可用didReceiveData只叫什么名字?
正所谓connectionDidFinishLoading方法? 如果它是所谓的,我猜NSURLConnection的是等待数据一定量的时间,因为没有数据到达时,它停止了 - 因为这个方法应该总是被调用一次NSURLConnection的完成,不管它是成功还是失败。
在一个的NSURLRequest NSURLConnection的基地和创建的NSURLRequest时,可以手动设置超时。 尝试设置一个真正巨大的超时。 超时是以秒为单位(秒的小数部分是允许的,它是一个浮点数),所以尽量设置为28800.0超时,这是8小时,看看现在的连接保持打开足够长的时间,以便didReciveData是不断调用。
另请注意,NSURLConnection的不知道从哪里开始的数据并在数据结束,所以可以称之为didReceiveData多次对被发送的单个数据片与您的应用程序需要重新组装接收到的数据本身和它必须知道,如果这是一个完整的数据块,准备处理,或者如果它必须等待更多的数据在另一个didReceiveData回调到来。
更新
NSURLConnection的不保证尽快到达的数据传送数据。 如果接收到一些数据,它仍然有空间来缓存更多的数据,它会继续等待更多的数据和数据汇总到一个块,最后一次提供整个块。 这就是为什么你的倒计时器不起作用。 它提供所有倒计时数据,但它这样做后,倒计时结束后,所有小倒计时更新完全放入一个区块和进一步MIME类型的HTTP标头宣布许多小块跟随。 为了避免更多的时候比必要调用你的方法委托,NSURLConnection的缓存只要内部因为它仍然有空间这样做的回复内容。
我不知道,如果你可以做你试图用一个NSURLConnection的做。 我个人更愿意使用一个真正的套接字连接 - 但我不知道是否能够在iPhone上是可能的。
在情况下,它是任何安慰你,你张贴在这里的URL很好地工作在Firefox,但它不会在Safari 4的工作(Safari 4中只显示图像的结束,而不是倒数)。 所以你得到这里的行为是同一个,你在Safari中得到的。
从你描述像什么插座将您的需求,更好地适应。 不幸的是我没有做过任何socket编程在iPhone上,所以我不能给任何引用,但我相信IOS有一些库,以协助。