2012-12-22 5 views
3

내 사이트에 HTTP GET 요청을 보낸 다음 페이지 내용을 가져 와서 구문 분석해야합니다. 최종 사용자가 완전히 독립적이기를 원하기 때문에 libCURL과 같은 라이브러리를 사용하지 않기를 바란다. (개인적인 경험으로 말하면 틀릴 수도 있지만 클라이언트가 libCURL을 사용하여 응용 프로그램을 실행하기 위해 특정 동적 링크 라이브러리를 가져야한다는 것을 상기한다면 라이브러리.), 나는 Visual Studio에서 C++를 2012 년HTTP에서 C++ 요청 받기

코드 예제도 좋은 것 사용하고 있습니다.

+0

당신은 Winsock2를 사용하는 방법을 묻는? – nurettin

+0

소켓()을 열고, send() 요청을 보내고, recv() 답을 .. 무엇을 이미 시도 했습니까? 어디서 붙어 있니? 어떻게 도와 드릴까요? – cmc

+4

DLL 배포를 처리하지 않으려는 경우 libcurl을 정적으로 링크하는 대신 정적으로 연결할 수 있습니다. –

답변

8

외부 라이브러리를 사용하지 않으려면 HTTP를 직접 구현해야합니다. 기본 기능 (파일의 직접 다운로드, 리디렉션, 프록시 없음, 쿠키 없음, 인증 없음, 암호화 없음, 압축 없음, 다른 속임수 없음) 만 있으면 기본 기능 만 필요할뿐입니다.

, 소켓을 만들고 웹 서버의 포트 80에 연결하고 서버에 다음 문자열을 보내 : 서버에서 파일 www.example.com/example.html을 요청

"GET /example.html HTTP/1.1\r\n" 
"Host: www.example.com\r\n" 
"\r\n" 

당신 에 연결됨.

서버가 데이터 뒤에 자신의 HTTP 응답 헤더 (또는 오류 설명)로 응답합니다.

2
  1. 대부분의 라이브러리는 정적으로 컴파일 할 수 있습니다. 정적 라이브러리를 사용하면 실행 파일에 링크되며 라이브러리의 dll을 제공 할 필요가 없습니다. 어쩌면이 도움이 될 : Walkthrough: Creating and Using a Static Library (C++)
  2. 일부 라이브러리 헤더 전용 또는 헤더 전용 모드로 사용할 수 있습니다 컴파일러는 소스에 라이브러리를 가져옵니다. 다시 말하지만, 라이브러리에는 DLL이 생성되지 않습니다. 예를 들어, getting Asiocpp-netlib을 헤더 전용 모드로 사용해보십시오. 어딘가에있는 Asio를위한 단순한 http 클라이언트의 sampe도있다. 당신이 어떤 DLL을 출하하지 않고 WinINet 또는 WinHTTP을 사용할 수 있습니다
  3. 는 생각 .
+2

WinInet/WinHTTP DLL은 이미 OS에 설치되어 있습니다. DLL을 직접 배포 할 필요는 없지만 여전히 DLL입니다. –