2012-03-08 17 views
1

私のアプリケーションはステータスを更新してアップデートに画像を追加する必要がありますので、status/update_with_mediaが最適です。自分のプラットフォームで使用できるライブラリがないので、PorlarSSL(Cで書かれたSSLライブラリ)を移植し、CのTCPプロトコルでHTTPプロトコルを実装しました。ここにupdate_with_media APIをリクエストするコードがあります。Twitter API `status/update_with_media`返信` 404 Not Found`

TCP送信バッファ(HTTPヘッダーを含めると身体を投稿する)である。これらのフィールドは\r\nで区切られ

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を期待しているので、私は形式が正しいことを確信しています。 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で私のハンドシェイクはOKです。私はTwitterから他のデータをリクエストできます。私のインターネットはOKです。

誰でも手伝ってもらえますか?

答えて

2

どのサーバーに接続していますか?写真のアップロードはupload.twitter.comに指示する必要があります。

さらに、Content-Disposition: from-data; name="media[]"; filename="asddf.gif"には、タイプfrom-dataが含まれています。

+0

年!私は 'api.tiwitter.com'をTCP接続パラメータに設定しているので、' api.twitter.com'は 'upload.twitter.com'を認識できないので、サーバは404エラーを出します。 エラーを修正するとすぐに403 Forbiddenエラーが発生しました: '{" request ":" \/1 \/status \ /update_with_media.json "、" error ":"ステータスの作成中にエラーが発生しました。 – coanor

+0

'from-data'ではなく、' form-data'が正しいです。 – coanor

+0

数時間のデバッグの後、私は今200のコードを手に入れることができ、画像はTwitterの成功のためにPOSTされます。厳密に[この問題](https://dev.twitter.com/discussions/1525)によるが、私はボディを 'name'でソートした。もう1つは**最後に '\ r \ n'をポストボディ**の後に忘れないことです。ありがとう、A.R.K. – coanor

関連する問題