cURL FAQ
FAQ
cURL - это название проекта , которое можно трактовать
как 'Client for URLs'
или 'Client URL Request Library'.
Библиотеку можно скачать по адресу http://curl.haxx.se/libcurl/ .
Проект состоит из 2-х продуктов :
1 libcurl - библиотека , поддерживающая FTP,FTPS,HTTP,
HTTPS,GOPHER,TELNET,DICT,FILE,LDAP.
Поддержка HTTP POST, HTTP PUT, FTP uploading, kerberos,
HTTP form based upload, proxies, cookies, user+password authentication,
file transfer resume, http proxy tunneling.
2. curl - командная утилита для получения и отсылки файлов
В libcurl прописан интерфейс основных интернет-протоколов .
Ее можно свободно использовать в своих приложениях.
В то же время curl не является клоном wget , он предназначен
для трансфера единичных файлов .
Curl также не является программой для зеркалирования сайтов ,
хотя вам никто не запрещает
написать скрипт с использованием Curl для зеркалирования .
Также Curl мультиплатформенный .
Список языков , для которых есть библиотечный интерфейс :
Basic, C, C++, Cocoa, Dylan, Euphoria,
Java, Lua, Object-Pascal, Pascal, Perl, PHP,
PostgreSQL, Python, Rexx, Ruby, Scheme , Tcl.
Например , для того чтобы сделать пост на какой-то адрес ,
можно набрать команду :
curl -d "datatopost" -H "Content-Type: text/xml" [URL]
В Curl нет встроенной поддержки javascript .
При работе Curl с SSL нужно различать 3 основных типа сертификатов :
1. Client certificate - иногда SSL-сервер может затребовать его у вас
2. Server certificate - обязателен для SSL-сервера .
При коннекте с таким сервером
Curl проверяет его с помощью Certificate Authority certificate ("CA cert").
Проверка успешно может не состояться, тогда вам будет отказано в доступе.
В этом случае можно попробовать с вашей стороны задисэблить эту проверку .
3. - Certificate Authority certificate ("CA cert") -
При работе с Curl возможно получение следующих ошибок
4.5.1 "400 Bad Request"
4.5.2 "401 Unauthorized"
4.5.3 "403 Forbidden"
4.5.4 "404 Not Found"
4.5.5 "405 Method Not Allowed"
4.5.6 "301 Moved Permanently"
Начиная с версии 7.10 Curl работает с NTLM - проприетарным протоколом
от сами знаете кого .
libcurl написана с использованием трэдов .
Ниже показана техника , с помощью которой можно записать
всю полученную информацию с удаленного сервера в память ,
а не в файл : для этого нужно определить структуру памяти
и указатель на нее передать в callback-функцию :
/* imaginary struct */
struct MemoryStruct {
char *memory;
size_t size;
};
/* imaginary callback function */
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 *)realloc(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;
}
Для получения с помощью Curl нескольких файлов нужно
в цикле использовать вызовы
curl_easy_setopt()
curl_easy_perform().
|
Andre | пояснительно!
для того чтобы понять что такое курл - не очень много, но чтото понятно! 2006-06-12 13:38:12 | Николай | Оч. класный перевод. Мы все с нетерпением ждем продолжения. ух блин почти стихами получается =) 2007-02-05 09:11:46 | |
|