【问题标题】:Twitter API `status/update_with_media` return `404 Not Found`Twitter API `status/update_with_media` 返回 `404 Not Found`
【发布时间】:2012-05-24 18:00:20
【问题描述】:

我的应用需要更新状态并添加图片到更新中,所以status/update_with_media是最好的选择。我的平台上没有可以使用的库,所以我移植了PorlarSSL(用C 编写的SSL 库)并在C 中实现了基于TCP 协议的HTTP 协议。这是我请求update_with_media API 的代码。

TCP 发送缓冲区(包括 HTTP 标头和 post 正文)是:

POST /1/statuses/update_with_media.json HTTP/1.1
Accept: */*
Host: upload.twitter.com
Authorization: OAuth oauth_consumer_key="wafabKbGRc16RUWgQvD4g", oauth_nonce="UvA44TqLLGWlHy3TDU8BPgAAAAAD", oauth_signature="62FJbljZOk9vOHU7RYCIn%2Fyl68c%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1331134259", oauth_token="46043095-aRPvEBFqHEiDwM0wWURJskAkdrLIJGMLRqI5yx1Po", oauth_version="1.0"
Connection: Keep-Alive
Content-Length: 659
Content-Type: multipart/form-data; boundary=--xyz

----xyz
Content-Disposition: form-data; name="media[]"; filename="asddf.gif"
Content-Type: application/octet-stream

<binary-image-data>
----xyz
Content-Disposition: form-data; name="status"

hello word
----xyz--

这些字段以\r\n 分隔,空白行应为\r\n,所以我确定格式正确。 TCP 缓冲区(包括二进制图像数据)然后通过 SSL 加密然后发送到 Twitter,但返回的正文是 HTML doc,HTTP 标头是

HTTP/1.1 404 Not Found
Date: Thu, 08 Mar 2012 06:16:46 GMT
Set-Cookie: k=10.34.145.134.1331187406993104; path=/; expires=Thu, 15-Mar-12 06:16:46 GMT; domain=.twitter.com
Last-Modified: Mon, 27 Feb 2012 21:57:35 GMT
Accept-Ranges: bytes
Content-Length: 12882
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8
Server: tfe

我想知道这是什么意思?二进制图像数据是否需要通过 SSL 加密?还是status/update_with_media 不需要 SSL,只需 HTTP 帖子就足够了?如果Content-Length不正确(比如大于实际发送长度),会不会有问题?

我和 twitter 的握手没问题,我可以从 Twitter 请求其他数据,所以我的互联网没问题。

谁能帮帮我?

【问题讨论】:

    标签: twitter


    【解决方案1】:

    您连接到哪个服务器?照片上传需要定向到upload.twitter.com。

    另外,Content-Disposition: from-data; name="media[]"; filename="asddf.gif" 包含拼写错误from-data

    【讨论】:

    • 一年!你是对的,我在我的 TCP 连接参数中不断设置api.tiwtter.com,所以api.twitter.com 无法识别upload.twitter.com,所以服务器说 404 错误。但是当我修复错误时,我立即收到 403 Forbidden 错误:{"request":"\/1\/statuses\/update_with_media.json","error":"Error creating status."}
    • 经过几个小时的调试,我现在可以得到 200 的代码,并且图像被 POST 到 Twitter 成功。严格按照this issue,但是我按name对body进行排序。另外一个是不要忘记帖子正文后的最后一个\r\n。谢谢 A.R.K.
    • 额外的 \r\n 是一个很好的提示 - 我必须牢记这一点 :)
    猜你喜欢
    • 2020-01-28
    • 1970-01-01
    • 2014-02-26
    • 2016-03-16
    • 2021-09-11
    • 2023-03-05
    • 2016-02-29
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多