0

我在我的 API 中有一个返回 PDF 文件内容的方法。

如何在成功回调中访问响应的原始数据?

4

1 回答 1

0

所有 Siesta 响应都以原始数据(以 Foundation 类型的形式Data)开始,然后通过转换器管道运行。

Content-type默认的转换器管道根据服务器发送的标头解析 JSON、文本和图像。该列表不包括 PDF,因此如果您的服务器正在发送内容类型application/pdf(或任何不是 JSON、文本或图像内容类型的内容),则Data在管道结束时响应仍然是原始的:

request.onSuccess { entity in
  guard let data = entity.content as? Data else {
    print("Huh, got mystery response:", entity.content)
    return
  }
  // do stuff with data
}

如果你没有得到Data——如果上面的代码说“嗯”——那么你的管道中的某些东西正在转换响应。您可以使用 Siesta 的详细日志记录来确定:

Siesta.LogCategory.enabled = LogCategory.detailed

在日志输出中查找:

  • Added config,当某物将变压器添加到管道时记录,
  • 有问题的请求之前的pipeline部分Resulting configuration,它显示了可能适用于响应的所有转换器,以及
  • Applied transformerResponse after pipeline查看实际的服务器响应是如何转换的。
于 2017-09-20T03:15:18.763 回答