2011-11-15 36 views
26

我在我的终端中,我想发送POST请求到给定的URL。我已经用REST客户端测试了这一点,所以我知道这些参数是有效的。用于发布POST请求的Curl命令

因此,可以说我要发布以下参数:

  • 用户名=托尼
  • 密码=秘密

要我的网址:https://exmaple.com/login/

我尝试以下卷曲命令在我的终端(我使用的是OSX Lion)

curl --data "username=tony&password=secret" http://exmaple.com/login/ 

我得到一个500 Server Error从服务器回来,所以我现在想的是REST客户端和curl命令之间可能不同的东西。

感谢您的帮助

更新:我使用的是HTTPS服务。我必须调整我的curl命令来解释这个吗?

+2

使用--trace-ascii选项查看通过线路传输的数据并将其与REST客户端发送的数据进行比较。 – Dan

+0

谢谢你的提示。当我在做跟踪时,我意识到我正在使用HTTPS。那么是否需要采取一些预防措施来解决这个问题呢? – Besi

+1

HTTPS不应对正确安装的卷曲产生影响。更糟糕的是,您可能会遇到证书验证错误,您可以使用-k选项解决(临时!)。 – Dan

回答

23

试试这个

curl -F username=tony -F password=secret http://exmaple.com/login/ 

-F(reference)也许应该做同样的--data?可能的问题是在webapp中。

也许你正在使用的应用程序使用基本身份验证进行身份验证?试试这个:

curl --user name:password http://exmaple.com/login/ 
+5

-F做了一个多部分的帖子,而 - data做了一个标准的应用程序/ x-www-form-urlencoded,所以如果一个人不工作,那么很有可能会出现另一个人的问题。 – Dan

+0

我应该知道的;我从我的博客上关于多部分帖子上传的文章中剪切并粘贴该命令! – russau

+0

好吧,我认为我的服务器执行身份验证时出现问题。但是我仍然觉得它好奇的是它在Rest客户端没有问题。我可能需要做一些特殊的Cookie处理吗? – Besi