【问题标题】:Asana REST API - Attach file to taskAsana REST API - 将文件附加到任务
【发布时间】:2015-04-28 12:53:45
【问题描述】:

我正在尝试通过 REST API 将文件附加到 Asana 中的任务,但出现超时错误。我相信错误来自 Asana 方面,所以我有点卡住了......

我提出的请求格式如下

POST https://app.asana.com/api/1.0/tasks/<my task>/attachments HTTP/1.1
User-Agent: OutSystemsPlatform
Content-Type: multipart/form-data; boundary="<my boundary>"
Authorization: Bearer <my bearer>
Host: app.asana.com
Content-Length: 218

--<my boundary>
content-disposition:  multipart/form-data; name=file; filename=<my filename>;
content-type: image/jpeg
<file binary data>
--<my boundary>--

我得到的回复如下

HTTP/1.1 504 Gateway Time-out
Connection: keep-alive
Content-Length: 176
Content-Type: text/html
Date: Tue, 28 Apr 2015 11:36:03 GMT
Server: nginx

<html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx</center>
</body>
</html>

在我看来,请求的格式很好,但它不起作用。

有人可以帮忙吗?

谢谢 佩德罗·卡多索

【问题讨论】:

  • 我目前正在调查生成此 504 的场景。我怀疑请求实际上有点偏离,我们在解析它时遇到了问题,但我不确定具体出了什么问题。你想用什么语言来做这个?您是否使用任何库来构建请求?
  • 我正在使用 OutSystems 平台。如果您不知道,请访问 www.outsystems.com。基本上,这会生成一个运行此请求的 .Net 应用程序。我在这里粘贴的请求就是我在日志中看到的。为什么说请求有点偏?
  • 您能否测试一下您在请求中使用了哪些换行符?你可以read here。 HTTP 规范是使用\r\n 换行。如果使用 \n 格式不正确的 multipart/form-data 请求,我们的服务器将生成 5xx。

标签: rest asana asana-api


【解决方案1】:

好问题!不幸的是,由于服务器上发生的数据解析过程中引发的错误,多部分/表单数据上传容易产生 5xx。

我们正在努力加强这一点,并在可能的情况下返回 4xx。

我怀疑您收到此错误是由于不正确的线路终止。

发出的请求应遵循 HTTP/1.1 规范,即行终止符的格式为 CRLF\r\n 概述here 以便服务器 以可靠和正确地处理请求。

【讨论】:

  • 据我所见,请求具有正确的字符。这是一个 link 到 Notepad++ 中所有字符可见的跟踪截图。
  • 在您的原始帖子中,您正确地在帖子正文中包含了您的唯一边界,Content-DispositionContent-Type 标题,但是,我在屏幕截图中看不到这些。还请确保在实际文件数据之前和之后有一个空行。
  • 感谢您的更新。您看不到它,因为请求的主体是二进制的...这是我正在执行的代码部分的screenshot...
  • 这就是问题所在。不要将此数据转换为二进制。边界和 MIME 部分标头的目的是向服务器指示数据的编码方式。二进制编码可以防止服务器读取标头。从光盘读取文件数据后也不要转换文件数据。只需指明内容类型、新行和原始文件数据。确认后,请在此处发表评论,我将更新问题和答案以准确反映此处的情况。
猜你喜欢
  • 1970-01-01
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 2019-07-30
相关资源
最近更新 更多