2012-03-21 9 views
1

tumblr APIへの投稿リクエストを作成しようとしています。以下に、前記APIからの抽出物を示す:tumblrへのPOSTリクエストを作成

The Write API is a very simple HTTP interface. To create a post, send a POST request to http://www.tumblr.com/api/write with the following parameters: 
    email - Your account's email address. 
    password - Your account's password. 
    type - The post type. 

これらは必須要素である。私は、apiに写真を送ってみたいです。 APIによると、これは私が私の要求を構築する方法を次のとおりです。DTBへ

email: myEmail 
password: myPassword 
type: photo 
data: "c:\\img.jpg" 

おかげで、私はテキストのみを送信するために、文字列を使用していますREGULARポストを、送信することができ、それは、画像の送信をサポートしていません。

var postData = new NameValueCollection 
{ 
    { "email", email }, 
    { "password", password }, 
    { "type", regular }, 
    { "body", body } 
}; 

using (var client = new WebClient()) 
{ 
    client.UploadValues("http://www.tumblr.com/api/write", data: data); 
} 

これは、通常のを送信するために働く、しかし、APIによると、私はmultipart/form-dataで画像を送信する必要があり、
代わりに私がNormal POST method
でそれを送ることができるがしかし、filesizesはで許されてほど高くはありません前者。

client.UploadValuesデータをサポートしています。これにより、私にpostDataを渡すことができます。
client.UploadDataもありますが、私はそれを使用する方法を理解できません。ドキュメントを参照しました。
また、開かれたファイルは、私がリクエストを送信する可能性について私を困惑させるNameValueCollectionに渡すことはできません。

誰かが答えを知っていれば、助けてくれたら非常に感謝します。

+1

あなたが表示するC#コードスニペットは、GETリクエストを送信しています。実際には、あなたのpythonコードのようにPOSTを送信すると思われる場合は、さらに表示する必要があります。 –

+0

@Anteara、私のタイトルの編集を確認してください - それはあなたが何をしようとしているかを反映しているようには見えません(クエリパラメータと投稿データを追加してください) –

答えて

3

//Create a RestClient with the api's url 
var restClient = new RestClient("http://tumblr.com/api/write"); 

//Tell it to send a POST request 
var request = new RestRequest(Method.POST); 

//Set format and add parameters and files 
request.RequestFormat = DataFormat.Json; //I don't know if this line is necessary 

request.AddParameter("email", "EMAIL"); 
request.AddParameter("password", "PASSWORD"); 
request.AddParameter("type", "photo"); 
request.AddFile("data", "C:\\Users\\Kevin\\Desktop\\Wallpapers\\1235698997718.jpg"); 

//Set RestResponse so you can see if you have an error 
RestResponse response = restClient.Execute(request); 
//MessageBox.Show(response) Perhaps I could wrap this in a try except? 

それはうまくいきますが、それが最良の方法であるかどうかはわかりません。

誰か他の提案がある場合は、私は喜んでそれらを取るでしょう。

4

あなたはapplication/x-www-form-urlencodedペイロードでPOSTリクエストを実行するためにWebClient ClassとそのUploadValues methodを使用することができます。私はRestSharpライブラリを使用してこれを理解することができた

var data = new NameValueCollection 
{ 
    { "email", email }, 
    { "password", password }, 
    { "type", regular }, 
    { "body", body } 
}; 

using (var client = new WebClient()) 
{ 
    client.UploadValues("http://www.tumblr.com/api/write", data: data); 
} 
+0

ありがとうございます、今私は定期的な投稿を投稿できます - 今、写真をアップロードできません。 これは私が持っているものです: http://pastebin.com/kUh5rj2m このペーストビンには、画像を投稿しようとしているものも詳しく記載されています。両方のための文字列 任意のアイデアまたは私はちょうどそれが間違ってやっているおかげ 編集:私は私が解決策を見つけたかもしれないと思う。 「'client.UploadFile' – Anteara

+0

いや、私はそれを理解できないと思います。??。でる :/ – Anteara

関連する問題