libcurl örnek
This commit is contained in:
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
gcc -Wall main.c -lcurl
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
static size_t write_callback(char *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
|
{
|
||||||
|
size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
|
||||||
|
return written;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
int ret = EXIT_FAILURE;
|
||||||
|
if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
|
||||||
|
fputs("error: curl_global_init failed.\n", stderr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if (!curl) {
|
||||||
|
fputs("error: curl_easy_init failed.\n", stderr);
|
||||||
|
goto GLOB_CLEAN;
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); */
|
||||||
|
|
||||||
|
char const* file_name = "example.html";
|
||||||
|
FILE *stream = fopen(file_name, "w");
|
||||||
|
if (!stream) {
|
||||||
|
fprintf(stderr, "failed to open %s\n", file_name);
|
||||||
|
goto EASY_CLEAN;
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)stream);
|
||||||
|
|
||||||
|
CURLcode result = curl_easy_perform(curl);
|
||||||
|
fclose(stream);
|
||||||
|
|
||||||
|
if (result != CURLE_OK) {
|
||||||
|
fprintf(stderr, "error: %s\n", curl_easy_strerror(result));
|
||||||
|
goto EASY_CLEAN;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = EXIT_SUCCESS;
|
||||||
|
|
||||||
|
EASY_CLEAN:
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
GLOB_CLEAN:
|
||||||
|
curl_global_cleanup();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user