witam.
Wiem(chyba), że jest taka funkcja w curl która umożliwia danych metodą POST z odpowiednimi wartościami.
Czy ktoś może powiedzieć jaka bo nie pamiętam :D
0
0
struct MemoryStruct
{
char *memory;
size_t size;
};
///////////////////////////
struct MemoryStruct chunk;
CURL *curl;
//////////////////////////
static void *myrealloc(void *ptr, size_t size)
{
if(ptr) return realloc(ptr, size); else return malloc(size);
}
/////////////////////
static size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
size_t realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)data;
mem->memory = (char *)myrealloc(mem->memory, mem->size + realsize + 1);
if (mem->memory)
{
memcpy(&(mem->memory[mem->size]), ptr, realsize);
mem->size += realsize;
mem->memory[mem->size] = 0;
}
return realsize;
}
///////////////////////
void glowna_funkcja()
{
struct curl_slist *headerlist=NULL;
struct curl_httppost *post = NULL;
struct curl_httppost *last = NULL;
gchar *url;
CURLcode res;
chunk.memory=NULL;
chunk.size = 0;
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, url);
headerlist = curl_slist_append(headerlist, "Accept: text/html, */*");
headerlist = curl_slist_append(headerlist, "Connection: keep-alive");
headerlist = curl_slist_append(headerlist, "Host: host.pl");
headerlist = curl_slist_append(headerlist, "Content-Type: multipart/form-data");
curl_formadd(&post, &last, CURLFORM_COPYNAME, "login", CURLFORM_COPYCONTENTS, login, CURLFORM_END);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "pass", CURLFORM_COPYCONTENTS, pass, CURLFORM_END);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "MAX_FILE_SIZE", CURLFORM_COPYCONTENTS, "512000", CURLFORM_END);
curl_formadd(&post, &last, CURLFORM_COPYNAME, "plik", CURLFORM_FILENAME, plik, CURLFORM_CONTENTTYPE, "text/html", CURLFORM_FILE, sciezka, NULL), CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Cos");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
curl_formfree(post);
curl_slist_free_all (headerlist);
chunk.memory - odpowiedz
}