curl не работает при вставке того же URL, который работает в адресной строке браузера - PullRequest
1 голос
/ 29 апреля 2011

Я пытаюсь использовать libcurl c api для публикации чего-либо на сайте.URL работает, когда я получаю к нему доступ из браузера.Я скопировал то же самое из панели браузера и получил к нему доступ в программе.Программа зависает в вызове curl_easy_perform и никогда не возвращается.Я также предоставляю write_callback, но он никогда не вызывается.что не так с этим фрагментом кода ниже

по соображениям конфиденциальности, я удалил URL из кода ниже.

int main(void)
{
    CURLcode res;

    CURL *curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, ""); 
        curl_easy_setopt(curl, CURLOPT_POST, 1);
        //curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 1L );
        //curl_easy_setopt(curl, CURLOPT_TIMEOUT, 1L );
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
        res = curl_easy_perform(curl);
        if (res != CURLE_OK) fprintf(stderr,"failed: %s", curl_easy_strerror(res));
        curl_easy_cleanup(curl);
    }
    return -1;
}

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Проблема может быть в типе кодировки URL.Поэтому попробуйте посмотреть, как кодировать данные, отправленные на этот URL-адрес.по данным сервера.в php вы можете использовать rawurlencode с отличным от url-encode и может отправить ответ сервера.

0 голосов
/ 29 апреля 2011

Возможно, вам также нужно установить CURLOPT_POSTFIELDS и CURLOPT_POSTFIELDSIZE.

Так что если ваш пост выглядит как http://awesome.com/superpost.html?blah=hi

  • URL должен быть: http://awesome.com/superpost.html
  • POSTFIELDS должно быть: blah = hi
  • CURLOPT_POSTFIELDSIZE должно быть: strlen ("blah = hi")

На сайте curl есть несколько достойных примеров:

Примечание: вы также хотите экранировать ключ / значения поля сообщения с помощью curl_escape

...