我正在使用一个具有DownloadFile方法的API。成功请求该方法后,响应的内容类型将为application/octet stream,并包含一个文件。如果对方法的请求不成功,则响应的内容类型将为text/xml,并包含相应的错误。
我要求的文件是包含多张照片的档案,可能会非常大。因此,我使用CURLOPT_FILE
将有效负载直接写入文件,而不是将其存储在内存中。
我的问题是,有没有办法检查响应的内容类型,然后决定如何处理有效负载?我只想在内容类型为应用程序/八位字节流的情况下将有效负载写入文件。否则,我只想从XML响应中获取错误并将其返回给用户。
谢谢。
您可以在下载前发送HEAD
http请求,并解析内容类型字段的响应。为此,您必须将CURLOPT_NOBODY
和CURLOPT_HEADER
选项与CURLOPT_RETURNTRANSFER
一起使用,以便从curl_exec()
中获得完整的http HEAD部分作为字符串。