使用 cURL 发布数据时出现“位置参数”错误

问题描述 投票:0回答:5

如果我发出不带

--data "..."
的命令,它就可以正常工作。我试过谷歌,但找不到这个问题的任何答案。按照位于 here 的说明进行操作,当我尝试使用 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
php curl http-post
5个回答
52
投票

您的问题在这里得到解答:在 64 位 Windows 上运行 cURL

您没有运行curl,而是运行名为Invoke-WebRequest 的东西,它是curl 的别名。您需要取消别名curl,下载并安装curl(如果还没有)。


43
投票

Remove-item alias:curl

这样很容易卷曲!!

尝试并有趣..而且

curl
可以自己制作
SHORTEN URL
,所以不需要与第三方合作..:D


11
投票

使用命令提示符而不是使用 PowerShell。

如果您使用 PowerShell,则需要在curl 命令前加上

cmd /c
前缀。例如:

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

1
投票

正如其他答案已经提到的那样,powershell 中的curl 命令是别名,并在底层使用Invoke-WebRequest cmdlet。它具有与curl类似的功能。

您可以发出 POST 请求并发送和接收数据,而无需安装任何东西:

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

选项

-body
(Invoke-WebRequest) 相当于
-d
--data
(curl)。还必须指定 HTTP 方法

这个 StackOverflow 答案 还考虑了 New-WebServiceProxyInvoke-RestMethod


0
投票

要解决此问题,请在 VS Code 编辑器中指定 Git Bash 或除 Powershell 之外的任何其他终端类型。

主终端窗口右侧有一个终端类型下拉菜单。

应该看起来像这样。 + v(单击颠倒的胡萝卜并选择 git bash)

如果 git bash 不是选项。安装 git bash。 git bash 太棒了。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.