2016-09-25 5 views
4

libcurl과 관련된 이상한 문제가 있습니다. 특정 URL을 해결하지 못하고 "호스트 이름을 확인할 수 없습니다."라는 오류 메시지를 반환합니다. 다른 호스트를 해결하는 데 문제가 없습니다. 그 이유는 실패한 URL이 302 리다이렉트를 반환하지만, 그에 대한 적절한 옵션을 설정했기 때문입니다. 문제curl_easy_perform : 호스트 이름을 확인할 수 없습니다.

의 URL : http://servermods.cursecdn.com/files/922/48/worldedit-bukkit-6.1.3.jar

관련 코드 :

CURL* curl; 
FILE* data; 
std::string url; 

// ... 

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 
curl_easy_setopt(curl, CURLOPT_FILE, data); 
curl_easy_setopt(curl, CURLOPT_URL, url); 

curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); 
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); 

CURLcode res = curl_easy_perform(curl); 
+2

우리가 컴파일 할 수있는 완전한 프로그램이 도움이 될 것입니다. –

답변

8

libcurlCURLOPT_URL에 대한 char* 기대하고있다. 내 코드는 string입니다. 이로 인해 기본적으로 라이브러리가 문자열을 잘못 해석하고 호스트를 해결하지 못합니다.

+0

확실히 컴파일러가 그것에 대해 엄청난 경고를 던졌습니까? –

+0

아니요, 'curl_easy_setopt'는 불특정 형의 vararg를 기대합니다. 그래서 컴파일러는 맹목적으로 그것을 받아들이는 것보다 잘 모릅니다. – caseif

관련 문제