현재 http를 요청하기 위해 C를 사용해야하는 프로젝트를 진행 중입니다. 나는 곱슬 곱슬을 사용하여 이것을하려고합니다. 그러나 응답 메시지가 표시됩니다.C에서 Curl을 사용하는 지원되지 않는 프로토콜
error: unable to request data from https://coinex.pw/api/v2/currencies:
Unsupported protocol
오류가 컬링이나 서버에서 발생하는지 확실하지 않습니다. 다음은 예제 코드에서 빌린 코드입니다.
#include <curl/curl.h>
static char *request(const char *url)
{
CURL *curl = NULL;
CURLcode status;
struct curl_slist *headers = NULL;
char *data = NULL;
long code;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(!curl)
goto error;
data = malloc(BUFFER_SIZE);
if(!data)
goto error;
struct write_result write_result = {
.data = data,
.pos = 0
};
curl_easy_setopt(curl, CURLOPT_URL, url);
headers = curl_slist_append(headers, "Content-type: application/json");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_response);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &write_result);
status = curl_easy_perform(curl);
if(status != 0)
{
fprintf(stderr, "error: unable to request data from %s:\n", url);
fprintf(stderr, "%s\n", curl_easy_strerror(status));
goto error;
}
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code);
if(code != 200)
{
fprintf(stderr, "error: server responded with code %ld\n", code);
goto error;
}
curl_easy_cleanup(curl);
curl_slist_free_all(headers);
curl_global_cleanup();
/* zero-terminate the result */
data[write_result.pos] = '\0';
return data;
error:
if(data)
free(data);
if(curl)
curl_easy_cleanup(curl);
if(headers)
curl_slist_free_all(headers);
curl_global_cleanup();
return NULL;
}
팁/힌트를 환영합니다.
컬을 설치 한 후 open ssl을 설치했습니다. 나는 컬을 다시 만들어 그것을 작동합니다. 고맙습니다. –