2015-06-18 17 views
5

Ho questo esempio di codice che è stato pubblicato come risposta a un'altra domanda (Send a file via HTTP POST with C#). Funziona bene tranne per un problema. Circonda il limite dell'intestazione HTTP con le doppie virgolette:HttpContent boundary double quotes

multipart/form-data; boundary = "04982073-787d-414b-a0d2-8e8a1137e145"

Questo sta soffocando il servizio web che sto provando a chiamare. I browser non hanno queste virgolette. Ho bisogno di un modo per dire a .NET di lasciarli fuori.

private System.IO.Stream Upload(string actionUrl, string paramString, Stream paramFileStream, byte [] paramFileBytes) 
{ 
    HttpContent stringContent = new StringContent(paramString); 
    HttpContent fileStreamContent = new StreamContent(paramFileStream); 
    HttpContent bytesContent = new ByteArrayContent(paramFileBytes); 
    using (var client = new HttpClient()) 
    using (var formData = new MultipartFormDataContent()) 
    { 
     formData.Add(stringContent, "param1", "param1"); 
     formData.Add(fileStreamContent, "file1", "file1"); 
     formData.Add(bytesContent, "file2", "file2"); 
     var response = client.PostAsync(actionUrl, formData).Result; 
     if (!response.IsSuccessStatusCode) 
     { 
      return null; 
     } 
     return response.Content.ReadAsStreamAsync().Result; 
    } 
} 
+0

già risposto qui: http://stackoverflow.com/questions/21569770/wrong-content-type-header -Generata-con-multipartformdatacontent –

risposta

1

È possibile rimuovere le virgolette dal confine utilizzando il seguente codice:

var boundary = formData.Headers.ContentType.Parameters.First(o => o.Name == "boundary"); 
boundary.Value = boundary.Value.Replace("\"", String.Empty);