1*6236dae4SAndroid Build Coastguard Worker<testcase> 2*6236dae4SAndroid Build Coastguard Worker<info> 3*6236dae4SAndroid Build Coastguard Worker<keywords> 4*6236dae4SAndroid Build Coastguard WorkerHTTP 5*6236dae4SAndroid Build Coastguard WorkerHTTP GET 6*6236dae4SAndroid Build Coastguard WorkerHTTP Basic auth 7*6236dae4SAndroid Build Coastguard WorkerHTTP set cookie 8*6236dae4SAndroid Build Coastguard Workercookies 9*6236dae4SAndroid Build Coastguard Worker--libcurl 10*6236dae4SAndroid Build Coastguard Worker</keywords> 11*6236dae4SAndroid Build Coastguard Worker</info> 12*6236dae4SAndroid Build Coastguard Worker 13*6236dae4SAndroid Build Coastguard Worker# Server-side 14*6236dae4SAndroid Build Coastguard Worker<reply> 15*6236dae4SAndroid Build Coastguard Worker<data> 16*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 OK 17*6236dae4SAndroid Build Coastguard WorkerDate: Thu, 29 Jul 2008 14:49:00 GMT 18*6236dae4SAndroid Build Coastguard WorkerServer: test-server/fake 19*6236dae4SAndroid Build Coastguard WorkerContent-Length: 0 20*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/plain 21*6236dae4SAndroid Build Coastguard WorkerConnection: close 22*6236dae4SAndroid Build Coastguard Worker 23*6236dae4SAndroid Build Coastguard Worker</data> 24*6236dae4SAndroid Build Coastguard Worker</reply> 25*6236dae4SAndroid Build Coastguard Worker 26*6236dae4SAndroid Build Coastguard Worker# Client-side 27*6236dae4SAndroid Build Coastguard Worker<client> 28*6236dae4SAndroid Build Coastguard Worker<server> 29*6236dae4SAndroid Build Coastguard Workerhttp 30*6236dae4SAndroid Build Coastguard Worker</server> 31*6236dae4SAndroid Build Coastguard Worker<name> 32*6236dae4SAndroid Build Coastguard Worker--libcurl for GET with various options 33*6236dae4SAndroid Build Coastguard Worker</name> 34*6236dae4SAndroid Build Coastguard Worker<features> 35*6236dae4SAndroid Build Coastguard Workerhttp 36*6236dae4SAndroid Build Coastguard Workerftp 37*6236dae4SAndroid Build Coastguard Workerfile 38*6236dae4SAndroid Build Coastguard Workercookies 39*6236dae4SAndroid Build Coastguard Worker</features> 40*6236dae4SAndroid Build Coastguard Worker<setenv> 41*6236dae4SAndroid Build Coastguard WorkerSSL_CERT_FILE= 42*6236dae4SAndroid Build Coastguard Worker</setenv> 43*6236dae4SAndroid Build Coastguard Worker<command> 44*6236dae4SAndroid Build Coastguard Workerhttp://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER --libcurl %LOGDIR/test%TESTNUMBER.c --basic -u fake:user -H "X-Files: Mulder" -H "X-Men: cyclops, iceman" -A MyUA -b chocolate=chip --proto "=http,ftp,file" 45*6236dae4SAndroid Build Coastguard Worker</command> 46*6236dae4SAndroid Build Coastguard Worker</client> 47*6236dae4SAndroid Build Coastguard Worker 48*6236dae4SAndroid Build Coastguard Worker# Verify data after the test has been "shot" 49*6236dae4SAndroid Build Coastguard Worker<verify> 50*6236dae4SAndroid Build Coastguard Worker<protocol> 51*6236dae4SAndroid Build Coastguard WorkerGET /we/want/%TESTNUMBER HTTP/1.1 52*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 53*6236dae4SAndroid Build Coastguard WorkerAuthorization: Basic ZmFrZTp1c2Vy 54*6236dae4SAndroid Build Coastguard WorkerUser-Agent: MyUA 55*6236dae4SAndroid Build Coastguard WorkerAccept: */* 56*6236dae4SAndroid Build Coastguard WorkerCookie: chocolate=chip 57*6236dae4SAndroid Build Coastguard WorkerX-Files: Mulder 58*6236dae4SAndroid Build Coastguard WorkerX-Men: cyclops, iceman 59*6236dae4SAndroid Build Coastguard Worker 60*6236dae4SAndroid Build Coastguard Worker</protocol> 61*6236dae4SAndroid Build Coastguard Worker<stripfile> 62*6236dae4SAndroid Build Coastguard Worker# CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with 63*6236dae4SAndroid Build Coastguard Worker# configurations - just ignore them 64*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_SSL_VERIFYPEER/ 65*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_SSH_KNOWNHOSTS/ 66*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_HTTP_VERSION/ 67*6236dae4SAndroid Build Coastguard Worker$_ = '' if /CURLOPT_INTERLEAVEDATA/ 68*6236dae4SAndroid Build Coastguard Worker</stripfile> 69*6236dae4SAndroid Build Coastguard Worker<file name="%LOGDIR/test%TESTNUMBER.c" mode="text"> 70*6236dae4SAndroid Build Coastguard Worker/********* Sample code generated by the curl command line tool ********** 71*6236dae4SAndroid Build Coastguard Worker * All curl_easy_setopt() options are documented at: 72*6236dae4SAndroid Build Coastguard Worker * https://curl.se/libcurl/c/curl_easy_setopt.html 73*6236dae4SAndroid Build Coastguard Worker ************************************************************************/ 74*6236dae4SAndroid Build Coastguard Worker#include <curl/curl.h> 75*6236dae4SAndroid Build Coastguard Worker 76*6236dae4SAndroid Build Coastguard Workerint main(int argc, char *argv[]) 77*6236dae4SAndroid Build Coastguard Worker{ 78*6236dae4SAndroid Build Coastguard Worker CURLcode ret; 79*6236dae4SAndroid Build Coastguard Worker CURL *hnd; 80*6236dae4SAndroid Build Coastguard Worker struct curl_slist *slist1; 81*6236dae4SAndroid Build Coastguard Worker 82*6236dae4SAndroid Build Coastguard Worker slist1 = NULL; 83*6236dae4SAndroid Build Coastguard Worker slist1 = curl_slist_append(slist1, "X-Files: Mulder"); 84*6236dae4SAndroid Build Coastguard Worker slist1 = curl_slist_append(slist1, "X-Men: cyclops, iceman"); 85*6236dae4SAndroid Build Coastguard Worker 86*6236dae4SAndroid Build Coastguard Worker hnd = curl_easy_init(); 87*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L); 88*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER"); 89*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_USERPWD, "fake:user"); 90*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC); 91*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1); 92*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_USERAGENT, "MyUA"); 93*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L); 94*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_COOKIE, "chocolate=chip"); 95*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L); 96*6236dae4SAndroid Build Coastguard Worker%if ftp 97*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L); 98*6236dae4SAndroid Build Coastguard Worker%endif 99*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L); 100*6236dae4SAndroid Build Coastguard Worker curl_easy_setopt(hnd, CURLOPT_PROTOCOLS_STR, "file,ftp,http"); 101*6236dae4SAndroid Build Coastguard Worker 102*6236dae4SAndroid Build Coastguard Worker /* Here is a list of options the curl code used that cannot get generated 103*6236dae4SAndroid Build Coastguard Worker as source easily. You may choose to either not use them or implement 104*6236dae4SAndroid Build Coastguard Worker them yourself. 105*6236dae4SAndroid Build Coastguard Worker 106*6236dae4SAndroid Build Coastguard Worker CURLOPT_WRITEDATA was set to an object pointer 107*6236dae4SAndroid Build Coastguard Worker CURLOPT_WRITEFUNCTION was set to a function pointer 108*6236dae4SAndroid Build Coastguard Worker CURLOPT_READDATA was set to an object pointer 109*6236dae4SAndroid Build Coastguard Worker CURLOPT_READFUNCTION was set to a function pointer 110*6236dae4SAndroid Build Coastguard Worker CURLOPT_SEEKDATA was set to an object pointer 111*6236dae4SAndroid Build Coastguard Worker CURLOPT_SEEKFUNCTION was set to a function pointer 112*6236dae4SAndroid Build Coastguard Worker CURLOPT_ERRORBUFFER was set to an object pointer 113*6236dae4SAndroid Build Coastguard Worker CURLOPT_STDERR was set to an object pointer 114*6236dae4SAndroid Build Coastguard Worker CURLOPT_DEBUGFUNCTION was set to a function pointer 115*6236dae4SAndroid Build Coastguard Worker CURLOPT_DEBUGDATA was set to an object pointer 116*6236dae4SAndroid Build Coastguard Worker CURLOPT_HEADERFUNCTION was set to a function pointer 117*6236dae4SAndroid Build Coastguard Worker CURLOPT_HEADERDATA was set to an object pointer 118*6236dae4SAndroid Build Coastguard Worker 119*6236dae4SAndroid Build Coastguard Worker */ 120*6236dae4SAndroid Build Coastguard Worker 121*6236dae4SAndroid Build Coastguard Worker ret = curl_easy_perform(hnd); 122*6236dae4SAndroid Build Coastguard Worker 123*6236dae4SAndroid Build Coastguard Worker curl_easy_cleanup(hnd); 124*6236dae4SAndroid Build Coastguard Worker hnd = NULL; 125*6236dae4SAndroid Build Coastguard Worker curl_slist_free_all(slist1); 126*6236dae4SAndroid Build Coastguard Worker slist1 = NULL; 127*6236dae4SAndroid Build Coastguard Worker 128*6236dae4SAndroid Build Coastguard Worker return (int)ret; 129*6236dae4SAndroid Build Coastguard Worker} 130*6236dae4SAndroid Build Coastguard Worker/**** End of sample code ****/ 131*6236dae4SAndroid Build Coastguard Worker</file> 132*6236dae4SAndroid Build Coastguard Worker</verify> 133*6236dae4SAndroid Build Coastguard Worker</testcase> 134