dqnk57224 2014-11-17 20:35
浏览 30
已采纳

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

I am trying to submit a form from 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

Result:

Object moved to here.

I submit the form data to the /user/Login script and after a successful login the script redirects me to the value declared in "returnUrl". Maybe this is the point where curl fails to get response what I want (it is a csv file) from the "returnUrl".

What I found on Google: I need to enable follow redirect option with -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

Result:

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

I can't find any more info how to resolve this problem.

I tried to create a simple html file with the form:

<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>

This is working, when I press submit, I get the csv file what I needed.

  • 写回答

1条回答 默认 最新

  • duanmu2941 2014-11-17 21:18
    关注

    Is it working like that ?

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

    Edit:

    After reading your comments, I think you are trying something weird.

    If you have a login page and another page to get, you should have 2 curl commands. You can use cookies to keep track of the successfull login.

    Something like :

    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/
    

    Just some assumptions...

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)