Visual CSharp .NET - enviar varios tipos de archivo desde cliente web hacia una API con HttpWebRequest

 
Vista:

enviar varios tipos de archivo desde cliente web hacia una API con HttpWebRequest

Publicado por Mario (1 intervención) el 05/04/2022 21:53:04
Buenas tardes, solicito su ayuda ya que no encuentro documentación lo suficientemente clara sobre como hacerlo, lo que requiero es desde el cliente web enviar los datos básicos para el envío de un correo(correo, asunto) ademas de un archivo adjunto(pdf), anexo el código que he estado trabajando sin resultado ya que al ejecutar el programa me genera un error 400 solicitud incorrecta al momento de llamar a la API.


Este es el codigo que tengo en el cliente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
byte[] file = Encoding.UTF8.GetBytes(ms.ToString()); //Archivo Adjunto pdf
            byte[] ODatos = System.Text.Encoding.UTF8.GetBytes(Datos.ToString());//Datos para el envío del correo
 
 
            var url = "http://localhost:8324/api/SendEmails";
            HttpWebRequest  wr = (HttpWebRequest)WebRequest.Create(url);
            wr.ContentType = "multipart/form-data";
            wr.Method = "POST";
 
            using (var stream = new StreamWriter(wr.GetRequestStream()))
            {
                string json = JsonConvert.SerializeObject(Datos);
                stream.Write(ODatos.ToString(),0,ODatos.Length);
                stream.Write(file.ToString(),0,file.Length);
 
                stream.Flush();
                stream.Close();
            }
            WebResponse res = wr.GetResponse();
 
            using (var SR = new StreamReader(res.GetResponseStream()))
            {
 
                var result = SR.ReadToEnd().Trim();
            }

Este es el código que tengo del lado del API:

1
2
3
4
5
6
7
8
9
10
11
12
13
 // POST api/<Envio_Correos>
        [HttpPost]
        public string Post([FromForm] GenerateDocument value, byte[] file)//en el objeto GenerateDocument se asignan los parametros de correo y asunto que se envían desde el cliente web , en el parametro file deberia de llegar el archivo adjunto que se envía desde el cliente web.
        {
            //value.ModifyStructure();
            Email email = new Email();
            email.bodyHtml = value.ModifyStructure();
            email.DestinationMail = value.DestinationMail;
            email.subject = value.Subject;
            //email.file = value.file;
            return email.SendEmail();
 
        }

De antemano agradezco la ayuda que me puedan brindar, hasta pronto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder