Я пытаюсь отправить форму из 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 -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/
Просто некоторые предположения...