문제

좋아, 나는 이것을 시도해 보는 3 일을 보냈다. 여기 시나리오가있다 :

Google에서 '.CSV'파일을 다운로드 한 다음 파일의 데이터를 사용하여 작업을 수행하고 싶습니다. Win32 콘솔 응용 프로그램을위한 것입니다. 나는 후자를 가지고있다. 나는 파일을 다운로드하는 방법을 알아낼 수 없다. 나는 libcurl, curlpp, ptypes, 내 자신을 굴려.

... 단지 GET 요청입니다

글쎄, 그게 다 좋고 좋지만, 모든 사람들 이이 작업을 수행하는 방법을 알고 태어난 것처럼 보이기 때문에 뭔가 빠져 있어야합니다. 나는 이것을 알아 내려는 책을 빗질하고 있었고, "C ++의 예술 작품"과 함께 길을 여행 한 후 Lnkerrors에 큰 문제가있었습니다.

말한 모든 것은 이것으로부터 많은 것을 배웠지만이 시점에서 나는 그것을하는 방법을 알고 싶습니다. C ++에 대한 API는 심각하게 부족하며 예제 코드는 찾을 수 없습니다. 온라인 튜토리얼은 거의 존재하지 않습니다. 그리고 이것이 중요하다고 생각하는 책은 없습니다.

누군가 나에게 구명 뗏목을 던질 수 있습니까? 나는 여기 가장자리에있는 남자입니다.

편집하다

"Google에서"라는 말은 그들이 호스팅하는 .csv 파일을 다운로드하고 싶다는 것을 의미합니다. 예는 가능합니다 여기에서 찾았습니다.

도움이 되었습니까?

해결책

당신은 할 수 있어야합니다 이거 굽으십시오 당신의 의지에.

이제 나는 당신의 질문에 대답했습니다. 왜 C ++? 언어에 반대하는 것은 없지만 직업에 가장 적합한 언어를 선택하십시오. Perl, PHP 및 Python (그리고 더 확실하게)은 모두 이러한 종류의 작업에 대한 훌륭한 문서와 지원을 가지고 있습니다.

Perl (내가 익숙한 것)에서는 약 3-5 줄의 코드입니다.

다른 팁

왜 이미 거기에있는 것을 사용하지 않습니까?

urldownloadTofile ()

Win32 플랫폼에 있으므로 Libary에 내장 된 하나가 있습니다. 비교적 간단한 방법 : Win32 SDK의 일부인 Wininet. 그만큼 Wininet에 대한 기본 참조 MSDN에서 찾을 수 있습니다.

Win32 API에 익숙하지 않으면 거친 썰매가있을 것입니다. 예제 코드의 상당히 유용한 블록이 있습니다 여기

프로젝트에 적절한 라이브러리 참조를 추가하지 않으면 링커 오류가 발생합니다. 이미 몇 가지 교훈을 배운 것처럼 들리므로 Breif를 유지하겠습니다. 그러나 Win32 문서에서 필요한 라이브러리 및 헤더 파일 참조에 대한 참조를 찾을 수 있습니다 (어디에서 찾아야하는지 배워야합니다. 그것을 찾는 페이지).

표준 라이브러리로는 그렇게 할 수 없습니다. Win32이므로 Paul Keister의 조언을 따를 수 있습니다.

그러나 살펴보십시오 libcurl, 그리고 C ++에 있기 때문에 추천합니다. 포코 매우 유용합니다. 그들은 매우 편리한 도구입니다!

또 다른 옵션입니다 winhttp, Windows와 함께 제공됩니다.

> 예제 코드를 찾을 수 없습니다

???

수십 개의 샘플이 15 년 동안 게시되었습니다.

(com, inet 등)

나도 C ++를위한 좋은 http lib를 찾고 있었지만 '완벽한'lib를 찾지 못했습니다. boost.asio 간단한 HTTP 라이브러리의 경우 환상적이지만 매우 낮은 수준입니다 ( HTTP 클라이언트 예제 좋은 시작입니다). 그만큼 C ++ 네트워킹 라이브러리* (cpp-netlib)는 궤도에있는 것처럼 보이며 ASIO 위에 더 높은 수준의 API를 구축하지만 그다지 성숙하지는 않습니다. 확인하십시오 http_client 예제.

더 나은 옵션을 찾을 수 없다면 ASIO 주위에 내 포장지를 쓰거나 CPP-Netlib에 확장 (및 기여) 할 것입니다.

(btw libcurl입니다 ~ 아니다 나에게 더 나은 옵션. HTTP 클라이언트, 특히 C ++에서는 원하는 것보다 훨씬 큰 API이며 매우 다루기 쉬운 것입니다. 나를 잘못 이해하지 마십시오. 훌륭한 라이브러리이지만 간단한 HTTP 클라이언트에는 적합하지 않습니다.)

C ++에는 실제로 API 자체가 없습니다. GET 요청을하려면 프로그램이 문제의 사이트에 TCP 소켓 연결을 열고 HTTP 사양에 따라 정보를 소켓 아래로 보내야합니다. 여기. 예를 들어, 오픈 소스 프로그램 WGET가 무엇을 사용하는지 볼 수 있습니다. 직접 코딩하는 경우 패킷 스니핑 도구를 사용하는 것이 도움이됩니다. 브라우저가 웹 서버에 보내는 내용을 정확히보고 파일을 다시 가져오고 정확히 해당 메시지를 보낼 수 있습니다. 너무 어렵지는 않지만 꽤 어렵습니다. TCP는 처음에는 꽤 큰 학습 곡선입니다.

그건 그렇고, "Google에서"란 무엇을 의미합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top