【发布时间】:2019-05-18 12:56:20
【问题描述】:
通过 curl 获取 url 会导致无限响应。当我在浏览器中打开网址时,将开始无限下载文件。该 url 属于一个摄像头,它通知摄像头上发生的事件,如运动检测等。但它不是一个请求/一个响应的形式。它采用单一请求/无限响应的形式。为此,我需要削减输出以获得“--boundary”之间的一段。 除了描述之外,我还举了一个例子:
--boundary
Content-Type: application/xml; charset="UTF-8"
Content-Length: 480
<EventNotificationAlert version="2.0" xmlns="http://www.std-cgi.com/ver20/XMLSchema">
<ipAddress>192.168.14.227</ipAddress>
<portNo>80</portNo>
<protocol>HTTP</protocol>
<macAddress>b8:41:5f:02:81:45</macAddress>
<channelID>1</channelID>
<dateTime>2019-05-18T17:15:02+03:30</dateTime>
<activePostCount>0</activePostCount>
<eventType>videoloss</eventType>
<eventState>inactive</eventState>
<eventDescription>videoloss alarm</eventDescription>
</EventNotificationAlert>
--boundary
Content-Type: application/xml; charset="UTF-8"
Content-Length: 480
<EventNotificationAlert version="2.0" xmlns="http://www.std-cgi.com/ver20/XMLSchema">
<ipAddress>192.168.14.227</ipAddress>
<portNo>80</portNo>
<protocol>HTTP</protocol>
<macAddress>b8:41:5f:02:81:45</macAddress>
<channelID>1</channelID>
<dateTime>2019-05-18T17:15:02+03:30</dateTime>
<activePostCount>0</activePostCount>
<eventType>videoloss</eventType>
<eventState>inactive</eventState>
<eventDescription>videoloss alarm</eventDescription>
</EventNotificationAlert>
--boundary
介绍完之后,我的问题是: 如何使用 curl 仅获取第一个边界并且不要等到响应结束,因为它永远不会结束?每当我看到第一个“--boundary”时,我都需要切割。 另一个替代切割的解决方案是定义一个回调函数来获取 url 作为响应发送的所有内容并处理它并保留信息。 如何做到这两点?
【问题讨论】: