La función OutputDataReceived de C# no funciona con curl.
A continuación se muestra el código para utilizar OutputDataReceived para capturar información detallada de curl.
No se puede capturar información de esta manera. ¿Qué está mal?
var command = "curl.exe -vs -o test.html https:\\www.google.com";
var procStartInfo = new ProcessStartInfo("cmd", "/c " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
var proc = new Process();
proc.EnableRaisingEvents = true;
proc.OutputDataReceived += (s, e) => { if(!string.IsNullOrEmpty(e.Data)) textBoxLog.AppendText(e.Data); };
proc.StartInfo = procStartInfo;
proc.Start();
proc.BeginOutputReadLine();
proc.WaitForExit();
proc.Close();
davy.ai
El problema es que el código utiliza
RedirectStandardOutput
para capturar los datos de curl, pero la salida real de curl se envía al flujo de error estándar en lugar del flujo de salida estándar. Para capturar información detallada de curl, deberías utilizarRedirectStandardError
en lugar deRedirectStandardOutput
. Simplemente reemplaza la líneaprocStartInfo.RedirectStandardOutput = true;
porprocStartInfo.RedirectStandardError = true;
para resolver el problema.