上传:500 内部服务器错误
Upload: 500 Internal Server Error
对于遇到此问题的任何人:这是关于 Pushbullet API,如标记的那样。
第一次尝试。
我的上传请求似乎得到了很好的回应,我很确定我有正确的上传 URL,但上传阶段总是失败。
代码是 VB6,使用 MSXML2.XMLHTTP 实例发送:
With XMLHTTP
.open "POST", UploadUrl, True
.setRequestHeader "Access-Token", AccessToken
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & ContentBoundary
.onreadystatechange = Me
.send MultipartFormBody
End With
MultipartFormBody
是一个字节数组,因此那里没有任何内容被转码为 UTF-8。 ContentBoundary
是与 body 数据一起生成的字符串。 UploadUrl
是一个字符串,其值在前一个(上传请求)响应中返回。 XMLHTTP 自动创建一个 Content-Length header。
据我所知,消息 body 的格式也正确。当我在后者中出现缺陷时,我收到了一条错误消息,这对纠正它很有帮助。
--PushbulletReporter_3E43228zZz82234E3{CRLF}
Content-Disposition: form-data; name="file"; filename="capture.png"{CRLF}
Content-Type: image/png{CRLF}
{CRLF}
{bytes of a PNG image}--PushbulletReporter_3E43228zZz82234E3--{CRLF}
但现在我收到 500 内部服务器错误和一条错误消息 "An unhandled server error occurred."
body是3.5KB以下的头发。我的想法是...也许这里需要分块编码?
有什么线索吗?还有哪些信息可能有帮助?
首先,我想为文件上传的事情道歉,multipart/form-data 遗憾的是很难实际创建,因为很少有语言具有执行此操作的标准库。我有一个直接上传字节的版本,但还没有准备好发布。
我在日志中看到一些 "unexpected EOF" 错误,所以我只能假设这就是这里发生的事情。我还没有 运行 任何测试,但我认为你没有足够的 {CRLF} 或其他一些小错误。如果您可以使用现有库创建编码数据,然后将其与您的输出进行比较,那将是理想的。
在这种情况下,我将尝试使服务器 return 成为 400,但我想它会是 "Invalid multipart body"。
我制作了一个测试脚本,看起来缺少 CRLF 是问题所在:
--d3880c80febbef19d78c6daf83da33d6b973d2524d9a6146e4bc71f4973b\r\nContent-Disposition: form-data; name=\"file\"; filename=\"filename\"\r\nContent-Type: application/octet-stream\r\n\r\n{bytes of a PNG image}\r\n--d3880c80febbef19d78c6daf83da33d6b973d2524d9a6146e4bc71f4973b--\r\n
注意 PNG 图像部分字节后的 CRLF,我认为你遗漏了那些
对于遇到此问题的任何人:这是关于 Pushbullet API,如标记的那样。
第一次尝试。
我的上传请求似乎得到了很好的回应,我很确定我有正确的上传 URL,但上传阶段总是失败。
代码是 VB6,使用 MSXML2.XMLHTTP 实例发送:
With XMLHTTP
.open "POST", UploadUrl, True
.setRequestHeader "Access-Token", AccessToken
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & ContentBoundary
.onreadystatechange = Me
.send MultipartFormBody
End With
MultipartFormBody
是一个字节数组,因此那里没有任何内容被转码为 UTF-8。 ContentBoundary
是与 body 数据一起生成的字符串。 UploadUrl
是一个字符串,其值在前一个(上传请求)响应中返回。 XMLHTTP 自动创建一个 Content-Length header。
据我所知,消息 body 的格式也正确。当我在后者中出现缺陷时,我收到了一条错误消息,这对纠正它很有帮助。
--PushbulletReporter_3E43228zZz82234E3{CRLF}
Content-Disposition: form-data; name="file"; filename="capture.png"{CRLF}
Content-Type: image/png{CRLF}
{CRLF}
{bytes of a PNG image}--PushbulletReporter_3E43228zZz82234E3--{CRLF}
但现在我收到 500 内部服务器错误和一条错误消息 "An unhandled server error occurred."
body是3.5KB以下的头发。我的想法是...也许这里需要分块编码?
有什么线索吗?还有哪些信息可能有帮助?
首先,我想为文件上传的事情道歉,multipart/form-data 遗憾的是很难实际创建,因为很少有语言具有执行此操作的标准库。我有一个直接上传字节的版本,但还没有准备好发布。
我在日志中看到一些 "unexpected EOF" 错误,所以我只能假设这就是这里发生的事情。我还没有 运行 任何测试,但我认为你没有足够的 {CRLF} 或其他一些小错误。如果您可以使用现有库创建编码数据,然后将其与您的输出进行比较,那将是理想的。
在这种情况下,我将尝试使服务器 return 成为 400,但我想它会是 "Invalid multipart body"。
我制作了一个测试脚本,看起来缺少 CRLF 是问题所在:
--d3880c80febbef19d78c6daf83da33d6b973d2524d9a6146e4bc71f4973b\r\nContent-Disposition: form-data; name=\"file\"; filename=\"filename\"\r\nContent-Type: application/octet-stream\r\n\r\n{bytes of a PNG image}\r\n--d3880c80febbef19d78c6daf83da33d6b973d2524d9a6146e4bc71f4973b--\r\n
注意 PNG 图像部分字节后的 CRLF,我认为你遗漏了那些