2013-11-15 39 views
40

Nuget'ten this HttpClient'im var.HttpClient kullanarak nasıl veri gönderilir?

var response = await httpClient.GetAsync(url); 
var data = await response.Content.ReadAsStringAsync(); 

Ama sorun veri göndermek için nasıl bilmiyorum olmasıdır:

Ben bu şekilde yapmak verileri almak istiyor

? Bir gönderi isteği göndermem ve bu değerleri içime göndermem gerekiyor: comment="hello world" ve questionId = 1. Bunlar bir sınıfın özellikleri olabilir, bilmiyorum.

Güncelleştirme Bu yöntemin, post yöntemi gerekene kadar HttpContent'a nasıl ekleneceğini bilmiyorum. Böyle

await client.PostAsync(uri, content); 

şey: httClient.Post(string, HttpContent);

+0

hiç kimse yardımcı olamaz? :) – user2970840

+0

Post yöntemini kullanmaya çalıştınız mı? – Patrick

+0

Gönderinizde hangi içerikleri göndermeniz gerektiğine ilişkin belgeleri izlemelisiniz (bir API uyguluyorsanız). Daha sonra, bir HttpContent doldurun ve bunu [PostAsync] (http://msdn.microsoft.com/en-us/library/hh138190 (v = vs.110) .aspx) kullanın. – Patrick

cevap

85

Sen kullanmaya gerek

var comment = "hello world"; 
var questionId = 1; 

var formContent = new FormUrlEncodedContent(new[] 
{ 
    new KeyValuePair<string, string>("comment", comment), 
    new KeyValuePair<string, string>("questionId", questionId) 
}); 

var myHttpClient = new HttpClient(); 
var response = await myHttpClient.PostAsync(uri.ToString(), formContent); 

Ve u yazı sonrasında yanıt almak gerekiyorsa, kullanmalısınız:

var stringContent = await response.Content.ReadAsStringAsync(); 

Umarım yardımcı olur;)

+0

yanıtı "İşlenemez giriş" dir. belki başka bir yerde – user2970840

+6

veya daha kısa Sözlük değişmez bir hata vardır: 'var formContent = new FormUrlEncodedContent (yeni Dictionary { {, "yorum" yorum}, { "QuestionID", QuestionID} }); – hkarask

-2

UploadStringAsync yöntemini kullanın:

 WebClient webClient = new WebClient(); 
     webClient.UploadStringCompleted += (s, e) => 
      { 
       if (e.Error != null) 
       { 
        //handle your error here 
       } 
       else 
       { 
        //post was successful, so do what you need to do here 
       } 

      }; 


     webClient.UploadStringAsync(new Uri(yourUri), UriKind.Absolute), "POST", yourParameters);  
+2

teşekkürler, ama bence bu "HttpClient", "WebClient" den daha iyi. daha kolay ve temiz. öyle değil mi – user2970840

+0

Ah evet, WebClient'e çok alışkınım, soruları okurken kafamda vardı. HttpClient'i henüz kullanmadım. Afedersiniz! –