【发布时间】: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