Я думал, что это будет просто, но я не могу понять это. У меня есть форма с этой структурой:
<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. Однако я просто не могу получить что-либо, чтобы ПОСТ. Что-то не так с моим синтаксисом или с самой формой?
Так как мой комментарий был ответом:
action
атрибут HTML form
обычно называет (относительный) URL. http://www.w3.org/TR/html401/interact/forms.html#edef-FORM
В этом случае вам нужно свернуть URL-адрес обработчика формы:
curl -d "..." http://localhost:1112/DOTHINGS
Я считаю, что-то вроде этого должно работать:
curl -X POST -d "rules=junktext" -H "Content-Type: application/x-www-form-urlencoded" http://localhost:1112/DOTHINGS
Вы можете проверить с вашими журналами 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);
}