1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | BOOL SendHTTPPost(char *pHostname, char *pURI, char *pUserAgent, char *pFileName) { BOOL lRetVal = FALSE; HANDLE lInputFH = INVALID_HANDLE_VALUE; HINTERNET lInetInit = NULL; HINTERNET lInetConn = NULL; HINTERNET lInetReq = NULL; DWORD lBytesRead = 0; DWORD lBytesWritten = 0; DWORD lTotalBytesWritten = 0; char lTemp[MAX_BUF_SIZE + 1]; char lHeader[MAX_BUF_SIZE + 1]; BYTE lBuffer[MAX_BUF_SIZE]; INTERNET_BUFFERS lBufferIn = {0}; if (pHostname != NULL && pURI != NULL && pFileName != NULL) { if (PathFileExists(pFileName)) { if ((lInputFH = CreateFile(pFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE) { // Set default User Agent. if (pUserAgent == NULL) pUserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19"; if ((lInetInit = InternetOpen (pUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)) != NULL) { if ((lInetConn = InternetConnect(lInetInit, pHostname, INTERNET_DEFAULT_HTTP_PORT, NULL,NULL,INTERNET_SERVICE_HTTP, 0, 0)) != NULL) { if ((lInetReq = HttpOpenRequest(lInetConn, "POST", pURI, NULL, NULL, NULL, 0, 0)) != NULL) { lBufferIn.dwStructSize = sizeof(INTERNET_BUFFERS); lBufferIn.dwBufferTotal = GetFileSize (lInputFH, NULL); // Add HTTP header ZeroMemory(lHeader, sizeof(lHeader)); strcat(lHeader, "Content-type: application/x-www-form-urlencoded"); HttpAddRequestHeaders(lInetReq, lHeader, strnlen(lHeader, sizeof(lHeader)-1), HTTP_ADDREQ_FLAG_REPLACE|HTTP_ADDREQ_FLAG_ADD); if (HttpSendRequestEx(lInetReq, &lBufferIn, NULL, HSR_INITIATE, 0)) { do { if (!ReadFile(lInputFH, lBuffer, sizeof(lBuffer), &lBytesRead, NULL)) { printf("ReadFile failed on buffer %d.\n", GetLastError()); break; } if (!InternetWriteFile(lInetReq, lBuffer, lBytesRead, &lBytesWritten)) { printf("InternetWriteFile failed %d.\n", GetLastError()); break; } lTotalBytesWritten += lBytesWritten; } while (lBytesRead == sizeof(lBuffer)); if (lTotalBytesWritten == GetFileSize (lInputFH, NULL)) lRetVal = TRUE; } // if(HttpSendReque... InternetCloseHandle(lInetReq); } // if ((lInetReq... InternetCloseHandle(lInetConn); } // if ((lInetCo... InternetCloseHandle(lInetInit); } // if ((lInetIn... } // if ((lInputFH = CreateFile(... } // if (PathFileExists(... } // if (pHostn... return(lRetVal); } |