Principales respuestas
Error 404 al hacer un System.Diagnostics.Process

Pregunta
-
Estimados, estoy enviando un archivo a una api en una dirección existente pero me arroja el error 404.
El código es el siguiente
string curl = "-X POST " + "https://pangal.sii.cl/recursos/v1/boleta.electronica.envio"; curl = curl + "-H " + "accept: application/json "; curl = curl + "-H " + "User-Agent: Mozilla/4.0 ( compatible; PROG 1.0; Windows NT) "; curl = curl + "-H " + "Cookie:TOKEN=" + token; curl = curl + "Content-Type: multipart/form-data"; curl = curl + "-F " + "rutSender=" + pRutEmisor; curl = curl + "-F " + "dvSender=" + pDigEmisor; curl = curl + "-F " + "rutCompany=" + pRutEmpresa; curl = curl + "-F " + "dvCompany=" + pDigEmpresa; curl = curl + "-F " + "archivo=@" + url + " -i -k"; System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo("curl", curl); startInfo.UseShellExecute = false; startInfo.ErrorDialog = true; startInfo.CreateNoWindow = true; startInfo.RedirectStandardOutput = true; try { //Process.Start(startInfo); System.Diagnostics.Process p = new System.Diagnostics.Process(); // Start(startInfo); p.StartInfo = startInfo; p.Start(); System.IO.StreamReader sr = null; sr = p.StandardOutput; string salida = sr.ReadToEnd(); sr.Close(); Console.WriteLine(salida); } catch (Exception ex) { Console.WriteLine(ex.Message); }
La dirección del envío es la correcta entonces por qué del error 404?
Respuestas
-
El error se debía a que faltaban comillas a las variables dentro del string del curl, es decir
curl = curl + "-H " + "\"accept: application/json "\"; curl = curl + "-H " + "\"User-Agent: Mozilla/4.0 ( compatible; PROG 1.0; Windows NT) "\";
y así sucesivamente hacia abajo
- Marcado como respuesta EricRRModerator viernes, 16 de abril de 2021 15:03
Todas las respuestas
-
-
Hola,
Gracias por levantar tu consulta en los foros de MSDN.
Eric Ruiz
____________________________
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.
-
-
Según tu código, detrás del token estás concatenando "Content-Type..." sin ningún parámetro ni nada. ¿Estás seguro de que el Content-Type se pone así directamente, pegado al token? ¿No tendría que llevar -H para indicar que es otra cabecera distinta a la del token?
-
-
¿Lo has probado "a mano", llamando a curl desde la línea de comandos? ¿O desde alguna herramienta tal como Postman, introduciendo expresamente las cabeceras http?
Lo digo porque hay algunas cosas que podrían no funcionar bien. Por ejemplo, puede que el espacio en blanco después de Cookie: sea obligatorio. Puede que TOKEN sea sensible a mayúsculas y minúsculas y no deba ir todo en mayúsculas. Puede que el token no vaya en una cookie sino que tenga que ir en Authorize.
Todas estas cosas son difíciles de depurar cuando están embebidas en un ejecutable que hay que compilar. Por eso suele ser recomendable probarlo antes desde alguna herramienta que te permita experimentar ágilmente con todos los parámetros hasta que des con la combinación exacta que funciona. Y después ya "copias y pegas" desde ella y lo trasladas al programa.
-
El error se debía a que faltaban comillas a las variables dentro del string del curl, es decir
curl = curl + "-H " + "\"accept: application/json "\"; curl = curl + "-H " + "\"User-Agent: Mozilla/4.0 ( compatible; PROG 1.0; Windows NT) "\";
y así sucesivamente hacia abajo
- Marcado como respuesta EricRRModerator viernes, 16 de abril de 2021 15:03