amazon-web-services - 无法使用 API 网关和招摇下载 PDF
问题描述
我使用 Java 创建了一个 lambda 函数,该函数向 REST API 发出请求并获取经过 base64 编码并从 lambda 返回的字节数组
@Override
public Object handleRequest(final Request<Object> input,final Context
context)
//construct request
Base64 codec = new Base64();
final HttpResponse response = client.execute(request);
byte[] pdfResponse =
IOUtils.toByteArray(resonse.getEntity().getContent());
return codec.encode(pdfRespnse); //returns encoded byte array
在 swagger(2.0) 中,我提到过产生:根级别的 [application/pdf] 和模式类型作为响应 200 中的文件。
API 网关设置 -
- 将二进制媒体类型设置为“application/pdf”和“application/octet-stream”(也尝试使用 */ * )
- 确保 API 网关 - 方法响应包含“200”的 HTTP 状态,响应正文内容类型为“application/pdf”(空模型)
- 指定内容处理为转换为二进制。
当我通过邮递员到达端点时,我看到响应中的 UTF-8 编码 JSON 字符串和响应标头为“application/pdf”。当我尝试将请求 Accept 标头设置为“application/pdf”时得到 500 响应(但可以在日志中看到八位字节流和编码字节数组]。我想我在这里唯一缺少的是 isBase64Encoded 属性设置为 true。但我是无法弄清楚如何在我的代码中设置它。对此有什么想法吗?
解决方案
推荐阅读
- html - 通过 css 或普遍应用 img-fluid 用于数据库提供的图像
- c# - 为什么在同一个类中使用构造函数参数时可以访问私有属性
- python-3.x - 获取时间序列数据框中每个日期的最后一个条目
- java - 为 URLDecoder.decode() 抛出 UnsupportedEncodingException 的示例字符串
- javascript - 如何为同一路由调用不同的控制器功能?
- ubuntu-16.04 - aerospike 中的配置以在内存已满之前通知
- c# - 从 POST 上不成功的低级别调用构建的无效 NEST 响应
- html - 使用python3和selenium在表格的每一行中获取下拉菜单的链接
- c# - 错误信息:Project Android.Common 与 netstandard2.0 不兼容
- java - 如何忽略搜索视图中的前导空格?