2013-02-26 11 views
5

Ho il seguente WebAPI che restituisce MultipartContent al cliente contenente un'immagine da un database e un po 'di dati aggiuntivi: -Come leggere MultipartContent da HttpResponseMessage?

public class PhotoController : ApiController 
{ 

    public HttpResponseMessage GetPhoto(Int32 personId) 
    { 
     var service = new PhotoService(); 
     var photo = service.SelectPrimaryPhoto(personId); 
     if (photo == null) 
      return Request.CreateResponse(HttpStatusCode.NoContent); 
     HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK); 
     var content = new MultipartContent(); 
     content.Add(new ObjectContent<Photo.Data>(photo, new JsonMediaTypeFormatter())); 
     content.Add(new StreamContent(photo.Image)); 
     response.Content = content; 
     return response; 
    } 
} 

Sul client, il HttpResponseMessage.Content è emerso come tipo StreamContent. Come posso accedervi come MultipartContent? Il client è WPF, non un browser Web.

+0

È utile? http://stackoverflow.com/posts/10036445/edit –

+0

Non proprio. Non mi aspettavo che avrei dovuto implementare il mio MediaTypeFormatter per "multipart/mixed". Si può facilmente trattare con MultipartContent in un HttpRequestMessage, quindi il formattatore deve essere lì. Non è ovvio come leggere il contenuto multipart sul client. – Orac

+0

O forse http://stackoverflow.com/q/12413287/56778? Vedi i commenti nella risposta accettata per un collegamento ad alcuni esempi. –

risposta

1

In primo luogo è necessario aggiungere un riferimento a System.Net.Http.Formatting,

allora si avrà accesso al metodo di estensione .ReadAsMultipartAsync().

Esempio:

using System.Net.Http.Formatting; 

// ... 

HttpClient client = new HttpClient(); 
HttpResponseMessage response = await client.PostAsyc("{send the request to api}"); 

var content = await response.Content.ReadAsMultipartAsync(); 

var stringContent = await content.Contents[0].ReadAsStringAsync(); 
var streamContent = await content.Contents[1].ReadAsStreamAsync(); 
Problemi correlati