我正在尝试从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文件。
答案 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/
只是一些假设......