CURL: отправьте форму и получите данные от bash

0

Я пытаюсь отправить форму из 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 не может получить ответ, который я хочу (это файл csv) из " returnUrl ".

Что я нашел в 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>

Это работает, когда я нажимаю submit, я получаю файл csv, в котором я нуждался.

Теги:
curl

1 ответ

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/

Просто некоторые предположения...

  • 0
    Я уже пробовал это (передать переменные в одной строке), но, к сожалению, не работает. Тип формы должен быть POST, при GET вход в систему будет неудачным.
  • 0
    С -d ПОЧТА неявная
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню