2015-02-19 20 views
5

Ne göndermek için bu verileri varsa: Mesaj parametreleri:kullanımı HttpClient POST yönteminde x-www-form-urlencoded/

dizinin liste Dizisi (4 çift arasında olan

access_token_Value

ACCESS_TOKEN arg)

arg1 arg1_value

arg2

arg2_value

arg3

01 arg3_value

ARG4

arg4_value ve tarifnamede, bu (hem POST parametreleri olası tüm numaralandırılmış değerleri ve diziler, bu belgede belirtilmiş ve dikey çubuklar || ile ayrılır dönen). Evrensel Windows uygulaması projem var. Bu verileri "application/x-www-form-urlencoded" biçimine nasıl dönüştürebilirim? anahtar değeri gibi sıradan çiftler için ben

var body = new List<KeyValuePair<string, string>> 
    { 
     new KeyValuePair<string, string>("arg1", "arg1value"), 
     new KeyValuePair<string, string>("arg2", "arg2value"), 
     new KeyValuePair<string, string>("arg3", "arg3value"), 
     new KeyValuePair<string, string>("arg4", "arg4value") 
    }; 

    var content = new FormUrlEncodedContent(body); 
    var result = httpClient.PostAsync(uri, content).Result; 

kullanmak ve bu tamam (iletilen veriler: arg1 = arg1value & arg2 = arg2value & ....) verileri Ben de yazdım aynıdır, ama ne olursa bu yazının başlangıcı?

cevap

3

anahtarlarınızı, (. Yani URI'larda özel hiçbir karakter içermiyor) kodlamasını gerekmez varsayarsak nereye zaten dizelere dönüştürülen değerlerin) ile isim-değer çiftleri koleksiyonunda alanlar:

var httpBody = String.Join('&', 
        fields.Select(nv => 
        String.Concat(nv.Name, 
            "=", 
            WebUtility.UrlEncode(nv.Value)))); 

ve ardından HttpWebRequest gövdesine serileştirmek için geçerli kodlamayı kullanın.

+0

Üzgünüm, veri parametrelerini belirtmiyorum. E-posta adresim ve datetime (YYYY-AA-GGS HH: MM: SS format) var, bu yüzden '@' ve diğer özel karakterlere sahibim. Parametrelerimle POST gövdesi nasıl görünecek? access_token = access_token_Value & list [] [arg1] = arg1value & list [] [arg2] = değer & liste [] [arg3] = arg3value .... bunun gibi mi? ya da belki başka? – ciechan

+0

@ciechan 'UrlEncode' çağrısı sizin için tüm bu özel karakterleri işler. – Richard

+0

Tamam, anlıyorum. Ama parametrelerimle vücut postu nasıl görünecek? Formdan bahsediyorum, sipariş parametreleri. Özellikle listede (4 anahtar-değer parametrelerimle dizi dizisi). İlk önce: access_token = access_token_Value & ve aşağıdaki parametreler nasıl görünecek? – ciechan