2017-04-01 26 views
21

Şu anda bir wp8.1 uygulaması geliştiriyorum C#, json'da bir POST yöntemi gerçekleştirmeyi json nesnesi oluşturarak api'mde gerçekleştirdim (bm) textbox.texts dosyasından aşağıda benim kodum. Aynı textbox.text dosyasını nasıl alabilirim ve bunları bir içerik türü olarak = POSTLUT/x-www-form-urlencoded olarak kullanır. Bunun için kod nedir?HTTPclient içerik türünü kullanarak POST nasıl kullanılır = application/x-www-form-urlencoded

  Profile bm = new Profile(); 
      bm.first_name = Names.Text; 
      bm.surname = surname.Text; 

      string json = JsonConvert.SerializeObject(bm); 

      MessageDialog messageDialog = new MessageDialog(json);//Text should not be empty 
      await messageDialog.ShowAsync(); 

      HttpClient client = new HttpClient(); 
      client.DefaultRequestHeaders.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
      client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json"); 

      byte[] messageBytes = Encoding.UTF8.GetBytes(json); 
      var content = new ByteArrayContent(messageBytes); 
      content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
      var response = client.PostAsync("myapiurl", content).Result; 
+0

benim API yalnızca izin veriyor İçerik türü = application/x-www-form-urlencoded –

cevap

34
var nvc = new List<KeyValuePair<string, string>>(); 
nvc.Add(new KeyValuePair<string, string>("Input1", "TEST2")); 
nvc.Add(new KeyValuePair<string, string>("Input2", "TEST2")); 
var client = new HttpClient(); 
var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(nvc) }; 
var res = await client.SendAsync(req); 

Ya

var dict = new Dictionary<string, string>(); 
dict.Add("Input1", "TEST2"); 
dict.Add("Input2", "TEST2"); 
var client = new HttpClient(); 
var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(dict) }; 
var res = await client.SendAsync(req); 
+3

Ayrıca beri, FormUrlEncodedContent' 'kurucusuna bir sözlük geçebilir Sözlük, KeyValuePair'nin 'IEnumerable'ıdır. –

+0

*** await *** Task yöntemini kullanarak? – Kiquenet

+0

@Kiquenet evet, "async Task " yönteminde –