CURL:发布表单并从bash获取数据

时间:2014-11-17 20:35:25

标签: php linux bash curl

我正在尝试从bash提交表单:

curl -X POST  --data-urlencode "login=123456" --data-urlencode "password=123"
 --data-urlencode "returnUrl=/Katalog/SekceCsv/846?katalog=501" http://xy.com/user/Login

结果:

Object moved to here.

我将表单数据提交到/user/Login脚本,成功登录后,脚本会将我重定向到“ returnUrl ”中声明的值。也许这就是curl无法从“ returnUrl ”获得我想要的响应(它是一个csv文件)。

我在Google上发现的内容:我需要使用-L:

启用跟随重定向选项
curl -X POST  -L --data-urlencode "login=123456" --data-urlencode "password=123"
 --data-urlencode "returnUrl=/Katalog/SekceCsv/846?katalog=501" http://xy.com/user/Login

结果:

Length Required. HTTP Error 411. The request must be chunked or have a content length.

我找不到更多信息如何解决此问题。

我尝试使用以下格式创建一个简单的html文件:

<html>
<head></head>
<body>
<form method="post" id="LoginForm" action="http://xy.com/user/Login">

          <input type="hidden" value="/Katalog/SekceCsv/846?katalog=501" name="returnUrl" id="returnUrl">
          <input type="text" value="" style="width:150px;" name="login" id="login">
          <input type="password" style="width:150px;" name="heslo" id="heslo">

          <input type="submit">
</form>
</body>

这是有效的,当我按下提交时,我得到了我需要的csv文件。

1 个答案:

答案 0 :(得分:0)

这样的工作吗?

curl -dL "login=123456&password=123&returnUrl=/Katalog/SekceCsv/846?katalog=501" http://xy.com/user/Login

编辑:

阅读完评论后,我认为你正在尝试一些奇怪的事情。

如果您有登录页面和另一个要获取的页面,则应该有2个curl命令。您可以使用cookie来跟踪成功登录。

类似的东西:

curl -X POST -L -b /tmp/c -c /tmp/c -d "login=123456&password=123" http://xy.com/user/Login
curl -X POST -L -b /tmp/c -c /tmp/c -d "returnUrl=/Katalog/SekceCsv/846?katalog=501" http://xy.com/user/

只是一些假设......