#include <Windows.h>
#include <winhttp.h>
#include <iostream>
#include <fstream>
#pragma comment(lib, "winhttp.lib")
void SendFileToServer(const std::string& serverURL, const std::string& filePath) {
HINTERNET hSession = WinHttpOpen(L"WinHTTP Example/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
HINTERNET m_hConnect = WinHttpConnect( hSession, _T("192.168.232.143"), 9100, 0 );
if (hSession) {
HINTERNET hConnect = WinHttpOpenRequest(m_hConnect, L"POST", _T("/wb/File?Guid=100&MD5=abcdefg&SourceFileName=22.zip"), NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0);
if (hConnect) {
/*
CFileParam fileParam(_T("100"),FILE_BLACKB0X);
//设置文件的开始
vector<BYTE> payloads;
DWORD dwStartTimeTick =::GetTickCount();
int nK=3 ,nI=10240 ,nJ=1024 ;int j= 0;int i = 0;int k=0;;
fileParam.SetTotalLength( 1*nI*nJ);
for( k=0; k<nK; k++)
{
int c = 0;
for( i = 0 ;i< nI ; i++)
{
for( j= 0; j<nJ ;j++)
{
payloads.push_back( 65);
}
}
fileParam.SetStart();
fileParam.Write( &payloads[0],payloads.size());
result=CCommunicationFacade::Send(fileParam,pConn);
result->GetErrorInfo(errString,&dwErrorCode);
payloads.clear();
}
payloads.clear();
//设置文件的结束
fileParam.SetEnd();
payloads.clear();
payloads.push_back(10);
std::wcout<<"now data"<<payloads[0];
fileParam.Write(&payloads[0],payloads.size());
*/
if (WinHttpSendRequest(hConnect, L"Content-Type: application/octet-stream", -1L, WINHTTP_NO_REQUEST_DATA, 0, 0, 0)) {
char buf[100];
strcpy(buf,"123456789");
// if (WinHttpSendRequest(hConnect, WINHTTP_NO_ADDITIONAL_HEADERS, -1L, buf, strlen(buf), strlen(buf), 0)) {
// if (WinHttpSendRequest( hConnect,WINHTTP_NO_ADDITIONAL_HEADERS, 0,WINHTTP_NO_REQUEST_DATA, 0,0, 0)){
std::string strExtInfo ="sfdfsdffffffffffsfdfdf";
if ( 0 != strExtInfo.length() ) {
// 默认可以一次全部写完
WinHttpWriteData(hConnect, strExtInfo.c_str(), strExtInfo.length(), NULL );
}
/*
WinHttpSendRequest( m_hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0,
(LPBYTE)param.GetPostData(),
param.GetPostDataLen(),
param.GetPostDataLen(), //在http头部的Content字段
0 );
*/
/*
std::ifstream file(filePath, std::ios::binary);
if (file) {
file.seekg(0, std::ios::end);
std::streampos fileSize = file.tellg();
file.seekg(0, std::ios::beg);
BYTE* pBuffer = new BYTE[fileSize];
file.read(reinterpret_cast<char*>(pBuffer), fileSize);
if (WinHttpWriteData(hConnect, pBuffer, static_cast<DWORD>(fileSize), NULL)) {
if (WinHttpReceiveResponse(hConnect, NULL)) {
// 处理服务器响应
DWORD dwStatusCode = 0;
DWORD dwSize = sizeof(DWORD);
if (WinHttpQueryHeaders(hConnect, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, NULL, &dwStatusCode, &dwSize, NULL)) {
if (dwStatusCode == 200) {
std::cout << "File uploaded successfully" << std::endl;
} else {
std::cout << "Failed to upload file. HTTP status code: " << dwStatusCode << std::endl;
}
}
} else {
std::cout << "Failed to receive response" << std::endl;
}
} else {
std::cout << "Failed to send file data" << std::endl;
}
delete[] pBuffer;
file.close();
} else {
std::cout << "Failed to open file" << std::endl;
}
*/
}
else {
std::cout << "Failed to send request" << std::endl;
}
} else {
std::cout << "Failed to open request" << std::endl;
}
WinHttpCloseHandle(hConnect);
WinHttpCloseHandle(hSession);
} else {
std::cout << "Failed to open WinHTTP" << std::endl;
}
}
int main(int argc, char* argv[])
{
SendFileToServer("aa","D:\\work\\bin\\2.zip");
system("PAUSE");
}