我正在将文件上传到 FirebaseStorage,但在 iOS 上遇到此错误:
Task <24E18897-20B7-45FD-9621-85FF09DC6326>.<1> finished with error [-1017] Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" UserInfo={_kCFStreamErrorCodeKey=-1, _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundUploadTask <24E18897-20B7-45FD-9621-85FF09DC6326>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"BackgroundUploadTask <24E18897-20B7-45FD-9621-85FF09DC6326>.<1>",
"LocalUploadTask <24E18897-20B7-45FD-9621-85FF09DC6326>.<1>"
), NSLocalizedDescription=cannot parse response, _kCFStreamErrorDomainKey=4, NSErrorFailingURLStringKey=https://firebasestorage.googleapis.com/v0/b/mybucket/o/user%2FNyq7dMqe1kcAZ77R1YwH5fsAkV83%2Fcontent%2F43aa2d41-7a19-11ec-bd39-85fcd9d025?uploadType=resumable&name=user%2FNqe1kcAZ77R1YwH5fsAkV83%2Fcontent%2F43aa2d41-7a19-11ec-bd39-8508fcd025&upload_id=ADPycdv0-OYZPx3zAGzLrn25ZdI9srgkgABHGKb_1fCqUO7AAPHsZTkz_iVX1NfuYQsn0LHgCCiOsSzhLiP4Ho7VynSf_ceJJw&upload_protocol=resumable, NSErrorFailingURLKey=https://firebasestorage.googleapis.com/v0/b/mybucket/o/user%2FNyqMqe1kcAZ77R1YwH5fsAkV83%2Fcontent%2F43aa2d41-7a19-11ec-bd39-8508fcd9d025?uploadType=resumable&name=user%2FNyq7dMqe1kcAZ77R1YwH5V83%2Fcontent%2F432d41-7a19-11ec-bd39-8508f9d025&upload_id=ADPycdv0-OYZPx3zAGzLrn25ZdI9srgkgABHGKb_1fCqUO7AAPHsZTkz_iVX1NfuYQsn0LHgCCiOsSzhLiP4Ho7VynSf_ceJJw&upload_protocol=resumable}
GTMSessionFetcher invoking fetch callbacks, data (null), error Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" UserInfo={_kCFStreamErrorCodeKey=-1, _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundUploadTask <24E18897-20B7-45FD-9621-85FF09DC6326>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"BackgroundUploadTask <24E18897-20B7-45FD-9621-85FF09DC6326>.<1>",
"LocalUploadTask <24E18897-20B7-45FD-9621-85FF09DC6326>.<1>"
), NSLocalizedDescription=cannot parse response, _kCFStreamErrorDomainKey=4, NSErrorFailingURLStringKey=https://firebasestorage.googleapis.com/v0/b/mybucket/o/users%2FNyq7dMqe1kcAZ77R1YwH5fsAkV83%2Fcontent%2F43aa2d41-7a19-11ec-bd39-8508fcd9d025?uploadType=resumable&name=users%2FNyq7dMqe1kcAZ77R1YwH5fsAkV83%2Fposts%2F43aa2d41-7a19-11ec-bd39-8508fcd9d025s&upload_id=ADPycdv0-OYZPx3zAGzLrn25ZdI9srgkgABHGKb_1fCqUO7AAPHsZTkz_iVX1NfuYQsn0LHgCCiOsSzhLiP4Ho7VynSf_ceJJw&upload_protocol=resumable, NSErrorFailingURLKey=https://firebasestorage.googleapis.com/v0/b/mybucket/o/user%2FNyq7dMqe1kcAZ77R1YwH5fsAkV83%2Fcontent%2F43aa2d41-7a19-11ec-bd39-8508fcd9d025-low_res?uploadType=resumable&name=user%2FNyq7dMqe1kcAZ77R1YwH5fsAkV83%2Fposts%2F43aa2d41-7a19-11ec-bd39-8508f&upload_id=ADPycdv0-OYZPx3zAGzLrn25ZdI9srgkgABHGKb_1fCqUO7AAPHsZTkz_iVX1NfuYQsn0LHgCCiOsSzhLiP4Ho7VynSf_ceJJw&upload_protocol=resumable}
这导致了
[firebase_storage/unknown] An unknown error occurred, please check the server response.
那么
Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response"
是什么意思以及如何解决它?
注意:我已经看到了这个问题,但这并不是我可以自行修复的问题,因为我正在使用 Firebase iOS SDK...
编辑:
我已经在 Firebase 支持中打开了一个 issue 和一个案例,以获取有关此问题的更多信息,不幸的是,目前似乎没有人拥有这些信息。
这可能是服务器端的一个错误,因为我无法 100% 地重现它,并且该错误对于调试也没有用。
编辑2:
Firebase 支持能够在互联网连接较低的情况下重现此问题,但就我而言,在正常连接的情况下也会发生这种情况。
我还设置了
metadata
来指定 content-type
以避免额外的“解析”服务器端,但遗憾的是它没有改变任何内容。
我也有同样的问题。
但我明白为什么会出现这个问题。
也许,这个问题是由弱网络级别造成的。
如果您想重现此问题,请使用“Xcode的其他工具”的“硬件”中的“Network Link Conditioner.prefPane”
Xcode 的其他工具下载链接
我可以重现以下设置。
Downlink Bandwidth: 10 Kbps
Downlink Packets Dropped: 5 %
Downlink Delay: 440 ms
Uplink Bandwidth: 10 Kbps
Uplink Packets Dropped: 5 %
Uplink Delay: 440 ms
DNS Delay: NO SET VALUE
它的设置可以通过管理配置文件添加。
祝你好运,我承认我的英语。
另请检查您的标头值。如果标头包含空值,这也可能是出现解析错误的原因(NSURLErrorDomain 代码为 -1017)。
确保您添加到 URLRequest 的所有标头都具有有效的非空值。空的或格式不正确的标头可能会在发送请求和接收响应时导致问题。这可能会导致解析错误,特别是如果服务器期望特定的标头值或格式。
仔细检查使用 addValue(_:forHTTPHeaderField:) 添加的值,以确保它们正确填充了必要的信息,例如正确的内容类型、授权令牌或您的 API 可能需要的任何其他标头字段。
此外,验证服务器预期的响应格式,并确保您的代码在接收和解析响应数据时正确处理此格式。
此错误通常会因各种因素而出现,因此检查标头和响应处理过程对于查明和解决问题至关重要。