2012-03-08 29 views
1

我的應用程序需要更新狀態並將圖像添加到更新中,因此status/update_with_media是最佳選擇。在我的平臺上沒有可用的庫,因此我移植了PorlarSSL(用C語言編寫的SSL庫),並在C協議中實現了TCP協議的HTTP協議。以下是我的代碼,用於請求update_with_media API。Twitter API`status/update_with_media` return`404 Not Found`

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 post就足夠了?如果Content-Length不正確(例如,大於實際發送長度),是否會導致任何問題?

我與twitter的握手是好的,我可以從Twitter請求其他數據,所以我的互聯網是好的。

任何人都可以幫助我嗎?

回答

2

你連接了哪臺服務器?照片上傳需要定向到upload.twitter.com。

此外,Content-Disposition: from-data; name="media[]"; filename="asddf.gif"包含錯字from-data

+0

年!你是對的,我已經在我的TCP連接參數中不斷設置'api.tiwtter.com',所以'api.twitter.com'無法識別'upload.twitter.com',所以服務器說404錯誤。 但是當我修復錯誤時,我立即得到了403 Forbidden錯誤: '{「request」:「\/1 \/statuses \ /update_with_media.json」,「error」:「錯誤創建狀態。」} – coanor 2012-03-09 06:34:26

+0

不是'from-data','form-data'是正確的。 – coanor 2012-03-09 07:36:33

+0

經過數小時的調試,我現在可以獲得200個代碼,並且圖像被髮布到Twitter成功。嚴格按照[這個問題](https://dev.twitter.com/discussions/1525),但我按'name'排序了主體。另外一個是**不要忘記帖子後**的最後一個'\ r \ n'。謝謝A.R.K. – coanor 2012-03-09 10:31:21