2012-07-31 2 views
0

페이지를 .xml로 저장하거나 페이지 소스를 볼 때 인터넷 브라우저가하는 것과 같은 방법입니다. 물론 XML 형식의 웹 페이지를 다음과 같이 타겟팅하고 있습니다.C++로 인터넷에서 xml을 다운로드하는 방법

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

왜이 작업을 수행하고 싶습니까? 그럼 난 문자열이나 나는 아직도 figuring out how to do

+3

체크 아웃이 필요 libcurl] (http://curl.haxx.se/libcurl/). –

+0

이 질문은 다른 질문과 정확히 어떻게 중복되지 않습니까? –

+0

동일한 질문을 두 번 질문하면 'libcurl 사용'과 같은 좋은 대답을 얻게됩니다. Libcurl은 XML 또는 HTML을 사용하여 원하는대로 처리 할 수 ​​있습니다. 당신이 얻는 답변을 믿을 준비가되지 않았다면 포럼에 게시하는 데 많은 포인트가 없습니다. – jahhaj

답변

2

는 Visual C++를 언급 한 이후, 좋은 솔루션을 만들 것 Microsoft Research에서 최근에 게시 한 HTTP Casablanca 라이브러리를 사용하면 C++ 11도 사용할 수 있습니다.

http://msdn.microsoft.com/en-us/devlabs/casablanca.aspx

당신은 [이 자습서에 설명 된 것과 유사한 HTTP 클라이언트를 사용하기 위해 같은 수 있습니다 http://msdn.microsoft.com/en-US/devlabs/hh977106.aspx

,

http_client client(L"http://somewebsite.com"); 

client.request(methods::GET, L"page-to-download.html") 
    .then([](http_response response) { 
     cout << "HTML SOURCE:" << endl << response.to_string() << endl; }) 
    .wait(); 
+0

이것은 libcurl보다 훨씬 뛰어났습니다. 표준이 곧 이렇게 될 것으로 기대합니다. –

1

해요 CString을가, libcurl 사용으로 특정 웹 페이지의 전체 소스를 덤프하려면 :

size_t AppendDataToStringCurlCallback(void *ptr, size_t size, size_t nmemb, void *vstring) 
{ 
    std::string * pstring = (std::string*)vstring; 
    pstring->append((char*)ptr, size * nmemb); 
    return size * nmemb; 
} 

std::string DownloadUrlAsString(const std::string & url) 
{ 
    std::string body; 

    CURL *curl_handle; 
    curl_global_init(CURL_GLOBAL_ALL); 
    curl_handle = curl_easy_init(); 
    curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str()); 
    curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, AppendDataToStringCurlCallback); 
    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, &body); 
    curl_easy_perform(curl_handle); 
    curl_easy_cleanup(curl_handle); 

    return body; 
} 
관련 문제