none
Error 404 al hacer un System.Diagnostics.Process RRS feed

  • 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?

    martes, 30 de marzo de 2021 13:10

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
    miércoles, 7 de abril de 2021 19:53

Todas las respuestas

  • Creo que puede ser porque te falta un espacio en blanco entre el final de la dirección y el "-H" que hay en la línea siguiente. Por cierto, el mismo error (falta de espacio) ocurre en casi todas las líneas que concatenas.
    martes, 30 de marzo de 2021 17:12
    Moderador
  • 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.

    martes, 30 de marzo de 2021 17:42
    Moderador
  • Gracias Alberto ahora sí pasó pero ahora recibo mensaje de NO AUTORIZADO , eso corresponde al token pero se lo estoy ingresando y no entiendo por qué?
    martes, 30 de marzo de 2021 21:01
  • 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?
    miércoles, 31 de marzo de 2021 6:34
    Moderador
  • Lo probé anteponiendo -H antes del content-type pero sigo recibiendo el mismo mensaje de NO Autorizado
    miércoles, 31 de marzo de 2021 12:11
  • ¿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.

    miércoles, 31 de marzo de 2021 16:23
    Moderador
  • 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
    miércoles, 7 de abril de 2021 19:53