我正在尝试从 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 文件。
最佳答案
是这样工作的吗?
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/
只是一些假设...
关于php - CURL:发布表单并从 bash 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26981489/