Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2016, 16:31   #1
exfaust
Новичок
Джуниор
 
Регистрация: 28.08.2016
Сообщений: 5
По умолчанию curl post

Добрый день, помогите, пожалуйста, разобраться. На сервер приходят все null, и хедер тоже null. Последний пример взял с офф. сайта с примеров, всё равно null значения всех полей.

Код:
CURL *curl;
CURLcode res;
struct WriteThis pooh;
res = curl_global_init(CURL_GLOBAL_DEFAULT);
struct curl_slist *headers=NULL; 
curl_slist_append(headers, "Accept: application/json");  
curl_slist_append( headers, "Content-Type: application/json");
curl_slist_append( headers, "charsets: utf-8"); 
curl_slist_append( headers, "AuthToken: 9BA1B05482567E64037573FFB68672DCB52E4993"); 
curl = curl_easy_init();
if (curl) 
{
  pooh.readptr = strbuf.GetString();
  pooh.sizeleft = (long)strlen(strbuf.GetString());
  curl_easy_setopt(curl, CURLOPT_URL,url);
  curl_easy_setopt(curl, CURLOPT_POST, 1L);
  curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
  curl_easy_setopt(curl, CURLOPT_READDATA, &pooh);
  curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 
  curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,writer);
  curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, &pooh);
  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, pooh.sizeleft);
  res = curl_easy_perform(curl);
  if (CURLE_OK == res) 
  { 
    char *ct;         
    res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
    if((CURLE_OK == res) && ct){    
                             
                         }
  }
curl_easy_cleanup(curl);
}
curl_global_cleanup();
 
struct WriteThis {
    const char *readptr;
    long sizeleft;
};
 
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
{
    struct WriteThis *pooh = (struct WriteThis *)userp;
 
    if(size*nmemb < 1)
        return 0;
 
    if(pooh->sizeleft) {
        *(char *)ptr = pooh->readptr[0]; /* copy one single byte */ 
        pooh->readptr++;                 /* advance pointer */ 
        pooh->sizeleft--;                /* less data left */ 
        return 1;                        /* we return 1 byte at a time! */ 
    }
 
    return 0;                          /* no more data left to deliver */ 
}
exfaust вне форума Ответить с цитированием
Старый 28.08.2016, 17:19   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Последний пример взял с офф. сайта с примеров, всё равно null значения всех полей.
Так почему же приводите левый пример, а не последний?

С офф сайта:
Цитата:
curl_slist_append() appends a specified string to a linked list of strings. The existing list should be passed as the first argument while the new list is returned from this function.
Код:
EXAMPLE

 CURL handle;
 struct curl_slist *slist=NULL;
 
 slist = curl_slist_append(slist, "pragma:");
 
 if (slist == NULL)
   return -1;
 
 curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist);
 
 curl_easy_perform(handle);
 
 curl_slist_free_all(slist); /* free the list again */
p51x вне форума Ответить с цитированием
Старый 28.08.2016, 17:23   #3
exfaust
Новичок
Джуниор
 
Регистрация: 28.08.2016
Сообщений: 5
По умолчанию

Не так выразился, последнее что я попробовал -взял с офф. сайта и добавил свои значения. Нужен хедер для доступа на сервер и я добавил
Код:
curl_slist_append( headers, "AuthToken: 9BA1B05482567E64037573FFB68672DCB52E4993");
.

Последний раз редактировалось exfaust; 28.08.2016 в 17:29.
exfaust вне форума Ответить с цитированием
Старый 28.08.2016, 17:27   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Ну не взяли же. Не видите разницы:
Код:
struct curl_slist *headers=NULL; 
curl_slist_append(headers, "Accept: application/json");  
curl_slist_append( headers, "Content-Type: application/json");
curl_slist_append( headers, "charsets: utf-8"); 
curl_slist_append( headers, "AuthToken: 9BA1B05482567E64037573FFB68672DCB52E4993");
Код:
 struct curl_slist *slist=NULL;
 
 slist = curl_slist_append(slist, "pragma:");
 
 if (slist == NULL)
   return -1;
Я же даже доку вам процитировал и выделил.
p51x вне форума Ответить с цитированием
Старый 28.08.2016, 18:13   #5
exfaust
Новичок
Джуниор
 
Регистрация: 28.08.2016
Сообщений: 5
По умолчанию

А по поводу пустых данных?
exfaust вне форума Ответить с цитированием
Старый 28.08.2016, 18:22   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Кто такой strbuf и где заполняется?
p51x вне форума Ответить с цитированием
Старый 28.08.2016, 18:45   #7
exfaust
Новичок
Джуниор
 
Регистрация: 28.08.2016
Сообщений: 5
По умолчанию

Нашёл ошибку, там & лишний, спасибо за помощь.
exfaust вне форума Ответить с цитированием
Старый 28.08.2016, 20:15   #8
exfaust
Новичок
Джуниор
 
Регистрация: 28.08.2016
Сообщений: 5
По умолчанию

Правда при повторном запросе снова выходит, что пустые данные, хотя на выводе они не пустые.
exfaust вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Curl error: with the SSL CA cert (php + curl + ssl) Hell Knight PHP 1 27.12.2014 14:30
PHP CURL AJAX POST-запрос SLASH_CyberPunk PHP 0 28.11.2011 16:07
CURL + gthtlfxf post запроса от одного скрипта другому. ведучий роздает задания для ведомых в цикле dem66 PHP 1 03.10.2011 10:56
Проблемы с POST запросом через cURL LonRv PHP 0 28.12.2009 17:56