2010-05-11 2 views
9

Làm cách nào để ẩn đầu ra curl_easy_perform (trong trình bao)?
Điều này liên quan đến một ứng dụng C.ẩn curl_easy_perform

+0

những gì bạn có nghĩa là che giấu? – hhafez

+0

Curl_easy_perform in nội dung trang được trả về theo yêu cầu (yêu cầu đăng trong trường hợp của tôi). Tôi muốn "ẩn" nội dung trang đó (không có chế độ xem) và in thư cá nhân của tôi – stdio

Trả lời

10

Đặt CURLOPT_WRITEFUNCTION và/hoặc CURLOPT_WRITEDATA lựa chọn:

FILE *f = fopen("target.txt", "wb"); 
curl_easy_setopt(handle, CURLOPT_WRITEDATA, f); 

Theo mặc định, libcurl viết ra để stdout. Khi bạn ghi đè lên điều này (đó là những gì hầu như bất kỳ ứng dụng sẽ làm), nó sẽ ghi vào một tập tin khác hoặc để vượt qua khối đầu ra để gọi lại. Xem tài liệu cho CURLOPT_WRITEFUNCTION để biết thêm chi tiết.

+0

Cảm ơn, nhưng tôi biết điều này. Không có cách nào mà không "lệch" đầu ra (một cách để xóa nó)? – stdio

+1

@stdio - Nếu bạn chỉ muốn đầu vào biến mất, hãy mở thiết bị NULL và in mọi thứ ở đó. –

+2

@Tm Post: ý của bạn là/dev/null? nếu bạn có ý nghĩa này, mã sẽ không được nhiều nền tảng. – stdio

6

Joey said, CURLOPT_WRITEFUNCTION sẽ cho phép bạn hoàn toàn bỏ qua tất cả đầu ra. Chỉ cần thiết lập một cuộc gọi lại hoàn toàn không có gì nếu bạn muốn dữ liệu chỉ biến mất mà không được ghi vào bất kỳ bộ mô tả tệp nào.

Ví dụ,

/* Never writes anything, just returns the size presented */ 
size_t my_dummy_write(char *ptr, size_t size, size_t nmemb, void *userdata) 
{ 
    return size * nmemb; 
} 

Sau đó, trong lựa chọn của bạn: (dễ dàng hơn rất nhiều)

curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, &my_dummy_write); 

Hoặc, quan điểm xử lý tập tin tại một thiết bị NULL.

20

Sử dụng CURLOPT_NOBODY trong curl_easy_setopt(). Ví dụ:

... 

CURL *curl; 
CURLcode statusCode; 

curl = curl_easy_init(); 
if(curl){ 
    curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/"); 
    //CURLOPT_NOBODY does the trick 
    curl_easy_setopt(curl, CURLOPT_NOBODY, 1); 
    curl_easy_perform(curl); 

... 

Liên kết đến tài liệu: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOBODY

+0

Tôi muốn đăng nhập vào trang https: // user: [email protected]/login/ và sau đó sử dụng curl để POST tới https://www.example.com/upload/ nhưng với CURLOPT_NOBODY tôi mất phiên -ID. Tôi giải quyết điều này bằng cách viết thư cho nul –

+0

Tôi có quyền giả sử điều này hữu ích cho các yêu cầu POST không, nhưng có lẽ không phải như vậy đối với GET? – xtofl

+0

cho các yêu cầu POST, điều này chỉ đơn giản là không gửi cơ thể, có nghĩa là nó không phải là những gì bạn mong đợi. – xtofl