Twitter API`status / update_with_media`返回'404 Not Found`

时间:2012-03-08 06:34:16

标签: twitter

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

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

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文档,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请求其他数据,所以我的网络没问题。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

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

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