2012-10-29 4 views
7

Considder il seguente codice:MultipartFormDataContent non inviare elementi StringContent quando il nome non si esaurisce con []

MultipartFormDataContent MPFD = new MultipartFormDataContent(); 
    MPFD.Add(new StringContent(0.ToString()), "doesNotWork"); 
    MPFD.Add(new StringContent(0.ToString()), "works[]"); 
    HttpClient apiClient = new HttpClient(); 
    var Result = apiClient.PostAsync(testurl, MPFD).Result; 
    Console.WriteLine("Response: " + Result.Content.ReadAsStringAsync().Result); 

Questi dati vengono poi inviato a un gestore generico che fa:

context.Response.ContentType = "text/plain"; 
foreach (string key in context.Request.Form.AllKeys) { 
    context.Response.Write(key + ": " + context.Request.Form[key] + Environment.NewLine); 
} 

Se Lo faccio, vengono pubblicati solo i nomi che terminano con "[]", ma devo anche essere in grado di pubblicare nomi senza "[]". Qualche idea del perché questo comportamento si verifica e come risolverlo?

Nota: Quando si utilizza un FormUrlEncodedContent, i nomi senza [] vengono pubblicati.

+0

_ "Se faccio questo, solo i nomi che finiscono in '[]' sono postati" _ - hai provato questo, per esempio usando [Fiddler] (http://www.fiddler2.com/fiddler2/)? – CodeCaster

risposta

0
form.Add(new StringContent(Opts.DataType), "\"fieldname\""); 
form.Add(new ByteArrayContent(mycontent, 0, mycontent.Length), "\"filename\"", "filename.csv"); 

Sembra inutile, ma funziona.