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

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

    打赏 评论

相关推荐 更多相似问题