-
September 18th, 2011, 03:19 AM
#1
Problem With Internet WriteFile
Hi,
I have problems with below code:
Code:
HINTERNET Initialize = InternetOpen(0, //Name of Application Calling (Agent)
INTERNET_OPEN_TYPE_DIRECT, //Access Type
NULL, //Proxy Name
NULL, //Proxy Bypass
0); //Flags
HINTERNET hConnect = InternetConnect(Initialize, // InternetOpen handle
server, // Server name
80, // HTTPS port
user, // User name
pass, // User password
INTERNET_SERVICE_HTTP, // Service
0, // Flags
0); // Context
FtpSetCurrentDirectoryW(hConnect, path);
HINTERNET hReq = HttpOpenRequest(hConnect, //InternetConnect handle
L"POST", //Method
r1, //Object name
NULL, //Version
NULL, //Referrer
NULL, //Extra headers
INTERNET_FLAG_KEEP_CONNECTION &&
INTERNET_FLAG_NO_CACHE_WRITE, //Flags
0); //Context
HANDLE hFile = CreateFile(upFile, //File name
GENERIC_READ, //Desired Access
FILE_SHARE_READ, //Share Mode
NULL, //Security Attribute
OPEN_EXISTING, //Creation Disposition
FILE_ATTRIBUTE_NORMAL, //Flags and Attributes
NULL); //Template File
if(hFile == INVALID_HANDLE_VALUE)
{
printf("\nFailed to open local file %s.", upFile);
return FALSE;
}
//DWORD BufferIn.dwBufferTotal = GetFileSize(hFile, NULL);
//printf("File size is %d\n", BufferIn.dwBufferTotal);
BOOL bRead;
BOOL bRead1;
BYTE pBuffer[1024];
BYTE pBuffer1[1024];
DWORD dwBytesRead;
BOOL bRet;
bool result;
DWORD dwBytesWritten;
if(HttpSendRequestEx(hReq, NULL, 0, NULL,0))
{
DWORD sum = 0;
do
{
if(!(bRead = ReadFile(hFile, pBuffer, sizeof(pBuffer), &dwBytesRead, NULL)))
{
printf("\nReadFile failed on buffer %lu.", GetLastError());
result = FALSE;
break;
}
if(!(bRet=InternetWriteFile(hReq, pBuffer, dwBytesRead, &dwBytesWritten)))
{
printf("\nInternetWriteFile failed %lu", GetLastError());
if (GetLastError() == 12019)
{
cout << "\nERROR_INTERNET_INCORRECT_HANDLE_STATE\n" << endl;
}
result = FALSE;
break;
}
sum += dwBytesWritten;
}
while(dwBytesRead == sizeof(pBuffer));
CloseHandle(hFile);
printf("\nActual written bytes: %d\n", sum);
}
/*close file , terminate server connection and
deinitialize the wininet library*/
InternetCloseHandle(hReq);
InternetCloseHandle(hConnect);
InternetCloseHandle(Initialize);
It runs and not shows any errors.
But my problem is that not make any file and write on that in my server.
Other my problem is how define path in my code?
for example my file is in www.www.com/reza
how make that read my file in "reza" folder(path).
Regards,
Last edited by rezame; September 18th, 2011 at 01:14 PM.
-
September 18th, 2011, 10:51 AM
#2
Re: Problem With Internet WriteFile
Unfortunately it's very hard to read/understand the code snippet you have posted.
The reason is very simple: you got rid of using Code tags.
Last edited by VictorN; September 18th, 2011 at 11:39 AM.
Victor Nijegorodov
-
September 18th, 2011, 11:36 AM
#3
Re: Problem With Internet WriteFile
Originally Posted by VictorN
Unfortunately it very hard to read/understand the code snippet you have posted.
The reason is very simple: you got rid of using Code tags.
Hi,
You mean I repost my code include tags?
Regards,
-
September 18th, 2011, 11:40 AM
#4
Re: Problem With Internet WriteFile
Originally Posted by rezame
Hi,
You mean I repost my code include tags?
No, you have to edit your OP adding Code tags.
Victor Nijegorodov
-
September 18th, 2011, 11:49 AM
#5
Re: Problem With Internet WriteFile
Code:
INTERNET_BUFFERS BufferIn = {0};
BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );
HINTERNET hSession, hConnection, hRequest;
wchar_t hdr_buf[1024], error_buf[128];
wchar_t query_buf[1024] = {0,};
BOOL result;
DWORD dwBytesRead=0;
DWORD dwBytesWritten=0;
BYTE pBuffer[1024];
hSession = InternetOpen( 0, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
if( hSession == NULL )
{
MessageBox( 0, L"HTTP Open failed!", L"HTTP", MB_OK );
return FALSE;
}
hConnection = InternetConnect( hSession, server,
INTERNET_DEFAULT_HTTP_PORT, user, pass,
INTERNET_SERVICE_HTTP, INTERNET_FLAG_PASSIVE, 0 );
if( hConnection == NULL )
{
wsprintf( error_buf, L"HTTP Connection failed (%d)", GetLastError() );
MessageBox( 0, error_buf, L"HTTP", MB_OK );
InternetCloseHandle( hSession );
return FALSE;
}
FtpSetCurrentDirectory(hConnection,path);
hRequest = HttpOpenRequest( hConnection, L"POST", r1,
HTTP_VERSION, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION &&
INTERNET_FLAG_NO_CACHE_WRITE, 0 );
if( hRequest == NULL )
{
wsprintf( error_buf, L"HTTP OpenRequest(POST) failed (%d)", GetLastError() );
MessageBox( 0, error_buf, L"HTTP", MB_OK );
InternetCloseHandle( hConnection );
InternetCloseHandle( hSession );
return FALSE;
}
HANDLE hFile = CreateFile(upFile, //File name
GENERIC_READ, //Desired Access
FILE_SHARE_READ, //Share Mode
NULL, //Security Attribute
OPEN_EXISTING, //Creation Disposition
FILE_ATTRIBUTE_NORMAL, //Flags and Attributes
NULL); //Template File
if(hFile == INVALID_HANDLE_VALUE)
{
wsprintf( error_buf, L"file open failed (%d)", GetLastError() );
MessageBox( 0, error_buf, L"HTTP", MB_OK );
InternetCloseHandle( hConnection );
InternetCloseHandle( hSession );
return FALSE;
}
BufferIn.dwBufferTotal = GetFileSize(hFile, NULL);
printf("File size is %d\n", BufferIn.dwBufferTotal);
if(HttpSendRequestEx(hRequest, NULL, 0, NULL,0))
{
DWORD sum = 0;
do
{
if(!(ReadFile(hFile, pBuffer, sizeof(pBuffer), &dwBytesRead, NULL)))
{
MessageBox( 0, L"Error Read File", L"HTTP", MB_OK );
break;
}
if(!(InternetWriteFile(hRequest, pBuffer, dwBytesRead, &dwBytesWritten)))
{
MessageBox( 0, L"Error Write File", L"HTTP", MB_OK );
break;
}
sum += dwBytesWritten;
cout<<pBuffer<<"\n";
cout<<sum;
} while(dwBytesRead == sizeof(pBuffer));
}
InternetCloseHandle( hRequest );
InternetCloseHandle( hConnection );
InternetCloseHandle( hSession );
cout<<"\n";
cout<<"Finished";
Last edited by rezame; September 18th, 2011 at 12:57 PM.
-
September 18th, 2011, 12:02 PM
#6
Re: Problem With Internet WriteFile
Did you ever read the Announcement: Before you post....
Don't you know what Code tag is?
Victor Nijegorodov
-
September 18th, 2011, 12:04 PM
#7
Re: Problem With Internet WriteFile
Sorry,
How add code Tag to my code?
Regards,
-
September 18th, 2011, 12:06 PM
#8
Re: Problem With Internet WriteFile
I've already posted you a link...
Victor Nijegorodov
-
September 18th, 2011, 12:09 PM
#9
Re: Problem With Internet WriteFile
Originally Posted by VictorN
Hi,
Thanks. sorry I am new in this forum. I done by php.
Code:
INTERNET_BUFFERS BufferIn = {0};
BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );
HINTERNET hSession, hConnection, hRequest;
wchar_t hdr_buf[1024], error_buf[128];
wchar_t query_buf[1024] = {0,};
BOOL result;
DWORD dwBytesRead=0;
DWORD dwBytesWritten=0;
BYTE pBuffer[1024];
hSession = InternetOpen( 0, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
if( hSession == NULL )
{
MessageBox( 0, L"HTTP Open failed!", L"HTTP", MB_OK );
return FALSE;
}
hConnection = InternetConnect( hSession, server,
INTERNET_DEFAULT_HTTP_PORT, user, pass,
INTERNET_SERVICE_HTTP, INTERNET_FLAG_PASSIVE, 0 );
if( hConnection == NULL )
{
wsprintf( error_buf, L"HTTP Connection failed (%d)", GetLastError() );
MessageBox( 0, error_buf, L"HTTP", MB_OK );
InternetCloseHandle( hSession );
return FALSE;
}
FtpSetCurrentDirectory(hConnection,path);
hRequest = HttpOpenRequest( hConnection, L"POST", r1,
HTTP_VERSION, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION &&
INTERNET_FLAG_NO_CACHE_WRITE, 0 );
if( hRequest == NULL )
{
wsprintf( error_buf, L"HTTP OpenRequest(POST) failed (%d)", GetLastError() );
MessageBox( 0, error_buf, L"HTTP", MB_OK );
InternetCloseHandle( hConnection );
InternetCloseHandle( hSession );
return FALSE;
}
HANDLE hFile = CreateFile(upFile, //File name
GENERIC_READ, //Desired Access
FILE_SHARE_READ, //Share Mode
NULL, //Security Attribute
OPEN_EXISTING, //Creation Disposition
FILE_ATTRIBUTE_NORMAL, //Flags and Attributes
NULL); //Template File
if(hFile == INVALID_HANDLE_VALUE)
{
wsprintf( error_buf, L"file open failed (%d)", GetLastError() );
MessageBox( 0, error_buf, L"HTTP", MB_OK );
InternetCloseHandle( hConnection );
InternetCloseHandle( hSession );
return FALSE;
}
BufferIn.dwBufferTotal = GetFileSize(hFile, NULL);
printf("File size is %d\n", BufferIn.dwBufferTotal);
if(HttpSendRequestEx(hRequest, NULL, 0, NULL,0))
{
DWORD sum = 0;
do
{
if(!(ReadFile(hFile, pBuffer, sizeof(pBuffer), &dwBytesRead, NULL)))
{
MessageBox( 0, L"Error Read File", L"HTTP", MB_OK );
break;
}
if(!(InternetWriteFile(hRequest, pBuffer, dwBytesRead, &dwBytesWritten)))
{
MessageBox( 0, L"Error Write File", L"HTTP", MB_OK );
break;
}
sum += dwBytesWritten;
cout<<pBuffer<<"\n";
cout<<sum;
} while(dwBytesRead == sizeof(pBuffer));
}
InternetCloseHandle( hRequest );
InternetCloseHandle( hConnection );
InternetCloseHandle( hSession );
cout<<"\n";
cout<<"Finished";
I think now it is good.
Regards,
Last edited by rezame; September 18th, 2011 at 12:57 PM.
-
September 18th, 2011, 12:49 PM
#10
Re: Problem With Internet WriteFile
Originally Posted by rezame
Hi,
Thanks. sorry I am new in this forum.
No, you are not a "new".
You have already got a similar request in this post about 3 months back. And you could change your post adding proper Code (not PHP since we discuss C++, not PHP) tags.
Victor Nijegorodov
-
September 18th, 2011, 01:01 PM
#11
Re: Problem With Internet WriteFile
Originally Posted by VictorN
No, you are not a "new".
You have already got a similar request in this post about 3 months back. And you could change your post adding proper Code (not PHP since we discuss C++, not PHP) tags.
Thanks for your advise.
I updated code by Code Tag.
I hope anybody can help me for solve this code problem
Regards,
-
September 18th, 2011, 01:56 PM
#12
Re: Problem With Internet WriteFile
If this function fails you do show a messagebox alerting the user to an error...but do not show/log the error...
Try using GetLastError() in the failure logic then insert that error into a string and displaying the exact error and not just a general error...just like you did for InternetConnect()
You can also lookup the function InternetGetLastResponseInfo() as this might be of some help in debugging the actual error.
Code:
if(!(InternetWriteFile(hRequest, pBuffer, dwBytesRead, &dwBytesWritten)))
{
MessageBox( 0, L"Error Write File", L"HTTP", MB_OK );
break;
}
Jim
ATP BE400 CE500 (C550B-SPW) CE560XL MU300 CFI CFII
"The speed of non working code is irrelevant"... Of course that is just my opinion, I could be wrong.
"Nothing in the world can take the place of persistence. Talent will not; nothing is more common than unsuccessful men with talent. Genius will not; unrewarded genius is almost a proverb. Education will not; the world is full of educated derelicts. Persistence and determination are omnipotent. The slogan 'press on' has solved and always will solve the problems of the human race."...Calvin Coolidge 30th President of the USA.
-
September 18th, 2011, 03:14 PM
#13
Re: Problem With Internet WriteFile
Originally Posted by Vanaj
If this function fails you do show a messagebox alerting the user to an error...but do not show/log the error...
Try using GetLastError() in the failure logic then insert that error into a string and displaying the exact error and not just a general error...just like you did for InternetConnect()
You can also lookup the function InternetGetLastResponseInfo() as this might be of some help in debugging the actual error.
Code:
if(!(InternetWriteFile(hRequest, pBuffer, dwBytesRead, &dwBytesWritten)))
{
MessageBox( 0, L"Error Write File", L"HTTP", MB_OK );
break;
}
Hi,
InternetWriteFile not shows any error.
I checked that by GetLastError() and not shows any error.
Regards,
-
September 18th, 2011, 03:46 PM
#14
Re: Problem With Internet WriteFile
You are using HttpSendRequestEx. But did you read the HttpSendRequestEx function documentation? Such as
Remarks
HttpSendRequest performs both the send and the receive for the response. This does not allow the application to send any extra data beyond the single buffer that was passed to HttpSendRequest. ...
After the call to HttpSendRequestEx, send the remaining data by calling InternetWriteFile. Finally, follow up with a call to HttpEndRequest.
...
Victor Nijegorodov
-
September 18th, 2011, 04:42 PM
#15
Re: Problem With Internet WriteFile
Originally Posted by VictorN
Thanks Victor,
I used HttpEndRequest after InternetWriteFile too, but not works again too and not write on file.
Regards,
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|