Использование cURL для POST к базовой форме

Я думал, что это будет просто, но я не могу понять это. У меня есть форма с этой структурой:

<form name="input" action="DOTHINGS" method="POST">

<textarea rows="10" cols="30" name="rules"></textarea>

<textarea rows="10" cols="30" name="facts"></textarea>

<br><input type="submit" value="Submit">

Поэтому я хочу опубликовать правила и факты текстовых областей и отправить. Я пробовал следующее:

curl -F "rules=@/directory/file.txt" -F "facts=@/directory/file.txt" http://localhost:1112/
curl -X POST -d "rules=junktext" http://localhost:1112/
curl --data "rules=junkdata&facts=junkdata" http://localhost:1112/

Независимо от того, что я пытаюсь, я получаю The requested resource could not be found в ответ.

Сначала я подумал, что мой localhost: 1112 недоступен, поэтому я попробовал варианты этого и сделал основной curl localhost:1112 который вернул содержание сайта, так что кажется, что он может получить доступ к этому URL. Однако я просто не могу получить что-либо, чтобы ПОСТ. Что-то не так с моим синтаксисом или с самой формой?

0

Решение

Так как мой комментарий был ответом:

action атрибут HTML form обычно называет (относительный) URL. http://www.w3.org/TR/html401/interact/forms.html#edef-FORM

В этом случае вам нужно свернуть URL-адрес обработчика формы:

curl -d "..." http://localhost:1112/DOTHINGS
1

Другие решения

Я считаю, что-то вроде этого должно работать:

curl -X POST -d "rules=junktext" -H "Content-Type: application/x-www-form-urlencoded" http://localhost:1112/DOTHINGS
0

Вы можете проверить с вашими журналами apache, что происходит. Зачастую это приводит, по крайней мере, к пониманию того, что данные отправились туда, куда вы ожидали.

Вы можете сделать это в php и, возможно, получить немного больше отзывов. Тем более, что конфигурация php CLI очень громка в отношении уведомлений и ошибок. Все еще выполняйте из командной строки, поместив его в файл php и выполнив файл php с помощью двоичного файла php вместо curl напрямую. Если у вас установлен php, конечно. Оставьте данные прокси пустыми, если вы не знаете, что это такое.

Пример PHP:

<?PHP
$data='x_response_code=1&x_response_reason_code=1&x_response_reason_text=This+transaction+has+been+approved.&x_ship_to_city=auburn&x_ship_to_state=New+York&x_ship_to_zip=13021&x_ship_to_country=United+States&x_amount=2.00&x_tax=0.00&x_duty=0.00&x_freight=0.00&x_tax_exempt=FALSE&x_po_num=&x_MD5_Hash=AF489908B0730A34FF3DF9&x_cvv2_resp_code=M&x_cavv_response=&x_test_request=false';

$response=curl_post_data_and_return('http://catalog.example.com/capture/CaptureAllFormData.php',$data,'','off');

echo "<pre>";
print_r($response);

function curl_post_data_and_return($site,$data,$proxy,$proxystatus){
$ch = curl_init();
if ($proxystatus == 'on') {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_URL, $site);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
//    curl_setopt($ch, CURLOPT_COOKIEFILE, "xxx.cookie.txt");
//    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
//    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
//    curl_setopt($ch, CURLOPT_REFERER, 'http://www.example.com//search.asp');
ob_start();      // prevent any output
return curl_exec ($ch); // execute the curl command
ob_end_clean();  // stop preventing output
curl_close ($ch);
}
-1
По вопросам рекламы [email protected]