Error de “parámetro posicional” al publicar datos con cURL

2 minutos de lectura

avatar de usuario de kneeki
rodillazo

Si tuviera que emitir el comando sin el --data "...", funciona bien. He intentado con Google y no puedo encontrar ninguna respuesta a este problema. Siguiendo las indicaciones que se encuentran aquí Recibo los siguientes errores cuando intento publicar datos con cURL:

PS C:\Users\David> curl --data "SMethod=0" "http://localhost/terra/modules/scripts/Query.php"
Invoke-WebRequest : A positional parameter cannot be found that accepts argument 'SMethod=0'.
At line:1 char:1
+ curl --data "SMethod=0" "http://localhost/terra/modules/scripts/Query.php"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Avatar de usuario de Phill Treddenick
Phill Treddenick

Su problema se responde aquí: Ejecución de cURL en Windows de 64 bits

No está ejecutando curl, está ejecutando algo llamado Invoke-WebRequest, que tiene un alias para curl. Necesitas unalias curl, descargar e instale curl (si aún no lo ha hecho).

Remove-item alias:curl

¡esto sucederá que se riza fácilmente!

PRUEBA Y DIVIÉRTETE… Y TAMBIÉN curl puede hacer su propio
SHORTEN URL así que no es necesario trabajar con terceros… 😀

avatar de usuario de rodster
rodster

Use el símbolo del sistema en lugar de usar PowerShell.

Si está utilizando PowerShell, deberá prefijar el comando curl con cmd /c. Por ejemplo:

cmd /c curl --data "SMethod=0" "http://localhost/terra/modules/scripts/Query.php"

  • Como está escrito actualmente, su respuesta no está clara. Edite para agregar detalles adicionales que ayudarán a otros a comprender cómo esto aborda la pregunta formulada. Puede encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.

    – Comunidad
    Bot

    20 de marzo a las 0:38

  • quiere decir usar cmd en lugar de PS

    -Rob Sedgwick

    27 de marzo a las 17:51

Como las otras respuestas ya mencionadas, el comando curl en powershell es alias y usa el Invocar-WebRequest cmdlet bajo el capó. Tiene capacidades similares para rizar.

Puede realizar una solicitud POST y enviar y recibir datos sin necesidad de instalar nada:

curl -body "SMethod=0" "http://localhost/terra/modules/scripts/Query.php" -Method 'POST'

La opción -body (Invoke-WebRequest) es el equivalente de -d o --data (rizo). los Método HTTP también se debe especificar.

Esta respuesta de StackOverflow también considera Nuevo WebServiceProxy y Invoke-RestMethod.

¿Ha sido útil esta solución?