I also checked using curl command window curl -I http://33.33.33/sample.pl <http://33.33.0.33/sample.pl>
HTTP/1.1 200 OK Date: Thu, 14 Nov 2013 04:40:46 GMT Server: Apache/2.4.4 (Win32) OpenSSL/0.9.8y PHP/5.4.19 Content-Type: text/plain; charset=utf-8 using curl command prompt i am getting and able to print the complete response as expected. On Thu, Nov 14, 2013 at 1:36 PM, Sunil Chandrasekharan < [email protected]> wrote: > Hi , > > I didnt intent to say that your code has issues. > i know its something to do with my set up. > > I am working on an android platform and i am using curl library for http > request. > > from my android activity i call this method: > > === String set = JNIGetWebpage(url,host,port,userid,password); ==== ( > the url is the sample.pl file inside the apache server that i attached in > my last post) > > it takes to the curltest.c file > this is my curltest.c file : > > ====== > > * #include*<string.h> > > * #include*<jni.h> > > * #include*<stdio.h> > > * #include*<stdlib.h> > > * #include*"curl/curl.h" > > * #include*<android/log.h> > > * typedef**struct* pageInfo_t { > > *char* *data; > > *int* len; > > } > pageInfo_t; > > * static*size_t *HTTPData*(*void* *buffer, size_t size, size_t nmemb, > *void* *userData) { > > *int* len = size * nmemb; > > pageInfo_t *page = (pageInfo_t *)userData; > > page-> > data = realloc(page->data,page->len + len +1); > > *if*(page->data == NULL) > > { > > *return* 0; > > } > > memcpy(&page-> > data[page->len], buffer, len); > > page-> > len += len; > > page-> > data[page->len] = 0; > > __android_log_print(ANDROID_LOG_DEBUG, > "LOG_TAG", "\n print size : %d ====== \n", len); > > __android_log_print(ANDROID_LOG_DEBUG, > "LOG_TAG", "\n print data : %s ====== \n", page->data); > > *return* len; > > } > > pageInfo_t > page; > > // *Interface* *funciton* that will *recieve* web page *fom* Java > > jstring *Java_com_samsung_jnitest_MainActivity_JNIGetWebpage*( JNIEnv* > env, jobject entryObject, jstring webpageJStr,jstring host, jint port > ,jstring userid, jstring pass) > > { > > CURL *curl; > > CURLcode res; > > *char* *buffer; > > *long* response_code = 0; > > *double* content_length = 0; > > *const* jbyte *webpage; > > *char* *hostname, *username, *password; > > webpage = (*env)->GetStringUTFChars(env, webpageJStr, NULL); > > *if* (webpage == NULL) { > > *return* NULL; /* OutOfMemoryError already thrown */ > > } > > page. > data = malloc(4096); > > page. > len = 0; > > page. > data[page.len] = '\0'; > > curl = curl_easy_init(); > > *if*(curl) { > > curl_easy_setopt(curl, CURLOPT_URL, webpage); > > curl_easy_setopt(curl, CURLOPT_TIMEOUT, 100); > > curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 50); > > curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, HTTPData); > > curl_easy_setopt(curl, CURLOPT_WRITEDATA, &page); > > res = curl_easy_perform(curl); > > curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); > > curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &content_length); > > /* always cleanup */ > > curl_easy_cleanup(curl); > > (*env)->ReleaseStringUTFChars(env, webpageJStr, webpage); > > *if*(res == 0) { > > __android_log_print(ANDROID_LOG_DEBUG, > "LOG_TAG", "\n Need to print : content length(%d) %d %s ======\n", > strlen(page.data),page.len, page.data); > > } > > *return* (*env)->NewStringUTF(env,page.data); > } > > > The output that i expect is around 100 lines , but i am getting around 60 > lines only ..( just an e,g) > i see that the size_t method is called 3 times . i have print the logs to > see what is happening inside > it enters the fucntion 3 times and log shows size and data . i see the > size varies 3 times and total it shows 11817 as the size... > But when i return back "page.data" to my application it still shows 11817 > as size > the output is much more ...so even though size_t method is called 3 > times..the amount of response data written is still not complete... > hence the output is truncated output... > > 1. i dont know why the complete response is not getting retrieved > 2. the size_t method is called 3 times..but the data is still > incomplete...not sure why > > > > On Thu, Nov 14, 2013 at 11:56 AM, Daniel Stenberg <[email protected]> wrote: > >> On Thu, 14 Nov 2013, Sunil Chandrasekharan wrote: >> >> Please stop the top-posting. >> >> >> Can you add my sample.pl file inside apache. then start apache and try >>> to access it using browser . if it displays the entire ouput. then fine. >>> now use the example c file as given by Daniel >>> http://curl.haxx.se/libcurl/c/getinmemory.html >>> >>> Please let me know if you are able to get the same output with the c >>> file as it is shown using browser. >>> >>> I just want to clarify here that the same c file i have used and still i >>> am not getting the entire response lines as output. >>> >> >> Exactly how does it misbehave? You're not very specific here. Can you >> also show us what headers your server sends back in that response? >> >> That example has been working fine for everyone for many years, and if it >> doesn't work there's a bug in libcurl and it would then hit a large amount >> of people so it isn't likely that something like that would go on >> unnoticed. I think the problem is rather somewhere in your test setup or >> something... >> >> >> -- >> >> / daniel.haxx.se >> ------------------------------------------------------------------- >> List admin: http://cool.haxx.se/list/listinfo/curl-library >> Etiquette: http://curl.haxx.se/mail/etiquette.html >> > >
------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.html
