libcurl 예제

위의 간단한 예제에서는 HTTP POST 작업이 필요한 대부분의 경우를 다루지만 다중 부분 폼포스트를 수행하지는 않습니다. 다중 부분 폼포스트는 (아마도 큰) 이진 데이터를 게시하는 더 나은 방법으로 도입되었으며 RFC 1867(RFC 2388에서 업데이트)에 처음 문서화되었습니다. 각 부품은 단일 데이터 단위인 부품 체인에 의해 빌드되기 때문에 다중 부품이라고 합니다. 각 부품에는 고유한 이름과 내용이 있습니다. 실제로 위에서 설명한 일반 libcurl POST 지원으로 다중 부분 폼포스트를 만들고 게시할 수 있지만 폼포스트를 직접 작성하고 libcurl을 제공해야 합니다. 이를 쉽게 하기 위해 libcurl은 여러 기능으로 구성된 MIME API를 제공합니다. 함수 curl_mime_init은 다중 부분 본문을 만듭니다. 그런 다음 curl_mime_addpart를 사용하여 여러 부분 본체에 새 부품을 추가할 수 있습니다. 일부에 대한 세 가지 가능한 데이터 원본이 있습니다: curl_mime_data를 사용하는 메모리, curl_mime_filedata를 사용하는 파일 및 curl_mime_data_cb를 사용하는 사용자 정의 데이터 읽기 콜백. curl_mime_name은 부품(예: 양식 필드) 이름을 설정하고 curl_mime_filename은 원격 파일 이름을 채웁니다. curl_mime_type을 사용하면 MIME 유형의 부품을 알 수 있으며 curl_mime_header를 사용하면 부품의 헤더를 정의할 수 있습니다. 다중 부분 본체가 더 이상 필요하지 않은 경우 curl_mime_free를 사용하여 바디를 파괴할 수 있습니다. 더 유용 할 수있는 것은 데이터에서 헤더를 분리하여 콜백을 다른 것으로 만드는 libcurl의 기능입니다.

예를 들어 CURLOPT_HEADERDATA를 설정하여 일반 쓰기 콜백에 전달하는 다른 포인터를 설정할 수 있습니다. 다음 예제에서는 일반 텍스트 내용이 있는 두 개의 간단한 텍스트 부분을 설정한 다음 이진 내용이 있는 파일을 설정하고 모든 것을 업로드합니다. 또한 배포 아카이브에서 문서/예제에서 이러한 예제를 찾을 수 있습니다. 위의 MIME API 예제는 이 함수를 사용하여 다음과 같이 표현됩니다: allexamples.zip 다운로드, 여기에 나열된 모든 예제 소스가 포함되어 있습니다. HTTP 프록시의 경우: 프록시가 HTTP 프록시라는 사실은 실제로 발생할 수 있는 일에 특정 제한을 둡습니다. HTTP URL이 아닐 수도 있는 요청된 URL은 여전히 HTTP 프록시에 전달되어 libcurl로 다시 전달됩니다. 이렇게 하면 투명하게 발생하며 응용 프로그램이 알 필요가 없을 수 있습니다. 때때로 HTTP 프록시를 통해 모든 작업이 HTTP 프로토콜을 사용한다는 것을 이해하는 것이 매우 중요하기 때문에 “may”라고 말합니다. 예를 들어 사용자 지정 FTP 명령이나 적절한 FTP 디렉터리 목록을 호출할 수 없습니다. 다음은 CURL_formadd MIME API 시퀀스에 대한 호출의 몇 가지 예입니다.