错误域 = NSURLErrorDomain 代码 = -1017 “无法解析响应” Firebase 存储 iOS

Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" Firebase Storage iOS

提问人:Tom3652 提问时间:1/21/2022 最后编辑:Tom3652 更新时间:11/16/2023 访问量:1443

问:

我正在将文件上传到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}

这导致一个
但是这次我可以看到iOS失败,而不是服务器响应不幸的是......
[firebase_storage/unknown] An unknown error occurred, please check the server response.

那么是什么意思以及如何解决它?Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response"

注意:我已经看到了这个问题,但这并不是我自己可以解决的问题,因为我使用的是 Firebase iOS SDK......

编辑:

我已经在 Firebase 支持中打开了一个问题和一个案例,以获取有关此的更多信息,因为不幸的是,目前似乎没有人拥有这些信息。
这可能是服务器端的错误,因为我无法 100% 重现它,并且该错误对调试也没有用。

编辑2:

Firebase 支持能够在相当低的互联网连接下重现此问题,但就我而言,正常连接也会发生这种情况。
我还设置了指定以避免额外的“解析”服务器端,但不幸的是,它没有改变任何东西。
metadatacontent-type

swift objective-c firebase firebase-storage

评论

0赞 DIGI Byte 1/24/2022
似乎请求和响应有问题 - 例如当它期望其他内容时 JSON 格式。
0赞 Tom3652 1/24/2022
这也是我的猜测,但我只是使用方法,所以我没有与 json 输入相关的自定义/容易出错的代码,因为它可能是由 Firebase SDK 本身完成的:/uploadFile
0赞 Ganpat 3/8/2022
@Tom3652你有解决方案吗?
0赞 Tom3652 3/8/2022
我仍然与Firebase支持保持联系,他们坚持在文件上传时设置元数据,但我仍然有问题。请随时评论我提到的问题,或者向Firebase支持部门提出申诉,这可能有助于表明这是一个真正的问题:/

答:

0赞 Laab 7/1/2022 #1

我有同样的问题。
但我明白了为什么会出现这个问题。
也许,这个问题是由弱网络级别发生的。
如果要重现此问题,请使用“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

它设置可以通过管理配置文件来添加。
祝你好运,我很抱歉我的英语。

评论

0赞 Tom3652 8/6/2022
感谢您的回答,但是这应该由 Firebase 本身修复,这不是我做错了的事情,我现在知道了。
0赞 user2131694 11/16/2023 #2

请同时检查您的标头值。如果标头包含空值,这也可能是出现分析错误的原因(代码为 -1017) 的 NSURLErrorDomain。

确保您添加到 URLRequest 的所有标头都具有有效的非空值。空标头或格式不正确的标头可能会导致在发送请求和接收响应时出现问题。这可能会导致分析错误,尤其是在服务器需要特定的标头值或格式时。

使用 addValue(_:forHTTPHeaderField:) 仔细检查要添加的值,以确保它们正确填充了必要的信息,例如正确的内容类型、授权令牌或 API 可能需要的任何其他标头字段。

此外,验证服务器的预期响应格式,并确保代码在接收和分析响应数据时正确处理此格式。

此错误通常由各种因素引起,因此查看标头和响应处理过程对于查明和解决问题至关重要。