我正在使用GAE的blobstore,并且我使用blobstore的serve方法返回一个文件,该方法将文件放在响应上。在客户端,我使用改造。有谁知道如何使用改造来阅读响应?我是否将该方法声明为特定类的退回,还是我还需要更改转换器,以便它不会尝试使用Gson转换器读取它? 谢谢
答案 0 :(得分:0)
虽然我不熟悉Retrofit,但使用Blobstore以RESTful方式提供响应仍然无法正常工作。根据BlobstoreService.serve [1]:
"在调用此方法之前应该不提交响应,并且应该假定在调用它之后提交。在调用此方法之前编写的任何内容都将被忽略。"
您不能简单地将blob作为JSON响应的一部分包含在内,您只是想获得blob。如果您可以更改Retrofit的转换器,以便它不会尝试将响应解释为JSON,那将是最佳选择。
更完整的解决方案是使用云存储而不是Blobstore,因此您可以在处理程序中构建正确的JSON响应时从中读取。 Blobstore更像是一个快速而又肮脏的"处理上传文件并重新提供服务的方法。
[1] https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/blobstore/BlobstoreService
[2] https://cloud.google.com/appengine/docs/java/blobstore/#Java_Uploading_a_blob
[3] https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/