307 while(!done)
308 {
309 l = recv(sock,buffer,1,0);
310 if(l<0)
311 done=TRUE;
312
313 switch(*buffer)
314 {
315 case '\r':
316 break;
317 case '\n':
318 if(chars==0)
319 done = TRUE;
320 chars=0;
321 break;
322 default:
323 chars++;
324 break;
325 }
326
327 MemBufferAddByte(&headersBuffer,*buffer);
328 }
329
330 req->headerReceive = (char*) headersBuffer.buffer;
331 *(headersBuffer.position) = 0;
332
333
334
335 MemBufferCreate(&messageBuffer); // Now read the HTTP body
336
337 do
338 {
339 l = recv(sock,buffer,sizeof(buffer)-1,0);
340 if(l<0)
341 break;
342 *(buffer+l)=0;
343 MemBufferAddBuffer(&messageBuffer, (unsigned char*)&buffer, l);
344 } while(l>0);
345 *messageBuffer.position = 0;
346 req->message = (char*) messageBuffer.buffer;
347 req->messageLength = (messageBuffer.position - messageBuffer.buffer);
348
349
350 closesocket(sock); // Cleanup
351
352 return 0;
353 }
354
355
356 //*******************************************************************************************************
357 // SendRequest
358 //
359 //*******************************************************************************************************
360 int Request::SendRequest(bool IsPost, string url, string& psHeaderSend, string& psHeaderReceive, string& psMessage)
361 {
362 HTTPRequest req;
363 int i,rtn;
364 LPSTR buffer;
365
366 req.headerSend = NULL;
367 req.headerReceive = NULL;
368 req.message = NULL;
369
370 //Read in arguments
371
372
373 if(IsPost)
374 { /* POST */
375 i = psHeaderSend.length();
376 buffer = (char*) malloc(i+1);
377 strcpy(buffer, psHeaderSend.c_str());
378
379 rtn = SendHTTP( url,
380 "Content-Type: application/x-www-form-urlencoded\r\n",
381 (unsigned char*)buffer,
382 i,
383 &req);
384
385 free(buffer);
386 }
387 else/* GET */
388 {
389 rtn = SendHTTP(url,NULL,NULL,0,&req);
390 }
391
392
393
394 if(!rtn) //Output message and/or headerSend
395 {
396 psHeaderSend = req.headerSend;
397 psHeaderReceive = req.headerReceive;
398 psMessage = req.message;
399
400
401 free(req.headerSend);
402 free(req.headerReceive);
403 free(req.message);
404 return 1;
405 }
406 else
407 {
408 return 0;
409 }
410 }