- From: Alik Kurdjukov <alik@witesite.com>
- Date: Tue, 22 Jan 2002 21:40:53 +0300
- To: <www-lib@w3.org>
Hello! I'm posting some data (in message body) to the server, that supports keep-alive. The posting works fine, server replies immidiately. But I have some strange timeout (about 10 seconds) from last bytes read to call of terminate_handler. The status returned to the handler is -1, but the result chunk is correct. What's wrong? Maybe I need to set some timeout or something? I have the following code to get data from server: =========== PRIVATE int terminate_handler (HTRequest * request, HTResponse * response, void * param, int status) { HTEventList_stopLoop (); return 0; } PUBLIC HTChunk * HTPostAnchorToChunk(HTParentAnchor * source, HTAnchor* destination, HTRequest* request) { if (source && destination && request) { HTChunk * chunk = NULL; HTStream * target = HTStreamToChunk(request, &chunk, -1); HTRequest_setOutputStream(request, target); if (HTPostAnchor(source, destination, request) != NULL) return chunk; else { HTChunk_delete(chunk); return NULL; } } return NULL; } int main (int argc, char ** argv) { HTRequest * request = NULL; HTParentAnchor * src = NULL; HTAnchor * dst = NULL; HTAnchor * anchor = NULL; char * dst_str = NULL; char * xml_data = NULL; BOOL status = NO; HTProfile_newNoCacheClient("libwww-POST", "1.0"); //HTSetTraceMessageMask("sop"); HTPrint_setCallback(printer); HTTrace_setCallback(tracer); HTNet_addAfter(terminate_handler, NULL, NULL, HT_ALL, HT_FILTER_LAST); if (argc >= 2) { dst_str = argv[1]; } else { HTPrint("Type the URI of the destination you want to POST.\n"); HTPrint("\t%s <destination>\n", argv[0]); HTPrint("For example, %s http://myserver/destination.html\n", argv[0]); return -1; } if (dst_str && *dst_str) { char message[10000]; long readBytes; FILE* f = fopen("request", "rb"); if (!f) { printf("Error opening request file!\n"); return 0; } readBytes = fread(message, 1, 10000, f); if (readBytes == 10000) { HTPrint("Too large file\n"); return -1; } fclose(f); char * cwd = HTGetCurrentDirectoryURL(); request = HTRequest_new(); HTRequest_setOutputFormat(request, WWW_RAW); anchor = HTAnchor_findAddress(dst_str); src = HTTmpAnchor(NULL); HTAnchor_setDocument(src, message); HTAnchor_setFormat(src, HTAtom_for("text/xml")); HTAnchor_setCharset(src, HTAtom_for("UTF-8")); HTAnchor_setLength(src, readBytes); result = HTPostAnchorToChunk(src, anchor, request); if (!result) { printf ("NULL Response!!\n"); } else { HTEventList_loop(request); HTPrint("---Printing response---->%s", HTChunk_data(result)); HTChunk_delete(result); } HTRequest_delete(request); HTProfile_delete(); } return 0; } =========== I'm posting some data to the server. The log on the screen looks like following: =========== Looking up jurgen Looking up jurgen Contacting jurgen Writing 1Kbytes Writing 1Kbytes Reading... Reading... Reading... Reading... =========== Best regards, Alik.
Received on Tuesday, 22 January 2002 13:36:26 UTC