http-сообщение не работает с помощью cUrl (libcurl) - PullRequest
0 голосов
/ 03 марта 2012

Я делаю простой http-запрос с использованием libcurl в файл index.php на моем веб-сервере. который имеет следующий простой код записи данных поста в файл

if (isset($_POST['abc'])){
    $log="abc.log";
    $h=fopen($log,"w");
    fwrite($h,$_POST['abc']);
    fclose($h);
}  

в то время как мой написанный на C ++ код, реализующий HTTP-запрос post, выглядит следующим образом

    CURL *curl;
    CURLcode res;
    curl=curl_easy_init();
    string url=AnsiString("http://127.0.0.1/curl/index.php?abc=123").c_str();
    string data="abc=3434";
    if (curl) {

        curl_easy_setopt(curl, CURLOPT_POST, 1);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS,AnsiString("abc=3434").c_str());
        curl_easy_setopt(curl, CURLOPT_URL,AnsiString("http://127.0.0.1/curl/index.php").c_str());
        res=curl_easy_perform(curl);
        curl_easy_cleanup(curl);
    }

Во-первых, публикация включена curl_easy_setopt(curl, CURLOPT_POST, 1);

Во-вторых, если я отлаживаю этот код, я получаю CURL_OK статус в res (возвращаемое значение) а также TCP 127.0.1: 80 будет устанавливаться каждый раз, когда я запускаю мониторинг кода через netstat -ano 15, но файл abc.log пуст

Что не так с этим ?? Разве вы не представляете, как правильно направить меня?

Спасибо заранее!

1 Ответ

0 голосов
/ 03 марта 2012

Отправка CURLOPT_POSTFIELDSIZE помогла!
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE,data.Length());

Журнал Apache сообщает, что все в порядке, вы отправили POST

127.0.0.1 - - [03/Mar/2012:17:39:06 +0500] "POST /curl/post.php HTTP/1.1" 200 -

...