 |
BorlandTalk.com Borland discussion newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Mike Collins Guest
|
Posted: Sun Jul 23, 2006 6:00 pm Post subject: file transfur via http and wininet |
|
|
Hi all, major hair pulling.
Trying to implement a live update facility and have major problems at every
turn.
Firstly I need to dynamic wininet.dll - which i've posted about previously.
Secondly i need to file transfer via http rather than ftp. The update
server is http not and ftp server. If i open an Internet connection, via
InternetConnect with the flag INTERNET_SERVICE_HTTP, is it possible to use
the ftp related wininet functions i.e. FtpSetCurrentDirectory etc or do i
have to use the http related ones? If so, any pointers on this.
I could really, really do with some helpful pointers on this.
Many, many thanks in advance,
Mike C |
|
| Back to top |
|
 |
Bob Gonder Guest
|
Posted: Sun Jul 23, 2006 8:55 pm Post subject: Re: file transfur via http and wininet |
|
|
Mike Collins wrote:
| Quote: | Trying to implement a live update facility and have major problems at every
turn.
Secondly i need to file transfer via http rather than ftp. The update
server is http not and ftp server. If i open an Internet connection, via
InternetConnect with the flag INTERNET_SERVICE_HTTP, is it possible to use
the ftp related wininet functions i.e. FtpSetCurrentDirectory etc or do i
have to use the http related ones? If so, any pointers on this.
|
Gambit is going to suggest using Indy 9 instead of rolling your own
HTTP handler. See recent discussion in b.p.c.internet.socket group
"IdFTP problem". There is an example in that thread of using relative
pathing with Indy's HTTP.
I would suppose
hR = HttpOpenRequest( hConnect, "GET",
"relative/path/update.exe",
NULL,NULL, types,flags,0)
Followed by a loop of
do{
InternetReadFile( hR. Buffer, sizeof(Buffer),
&dwNumberOfBytesRead );
WriteFile( hOut, Buffer, dwNumberOfBytesRead,
&dwNumberOfBytesWritten, NULL );
}while( dwNumberOfBytesRead );
As a suggestion, you might also look into InternetOpenUrl() which
claims to be directly useable by InternetReadFile and
InternetFindNextFile() without needing the InternetConnect().
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetopenurl.asp
The http server is on your ISP?
You can usually FTP to the server. That's how the stuff gets there in
the first place. Just use the ftp address you use to upload the web
pages/files.
Such as in your case, likely
static char ftp[]= "ftp.softwareassociates.com";
But, you would need to supply the name and password for access.
The name and password gets you to your default directory.
From there, I just download the relative path:
FtpGetFile( hFTPSession, "changes.html", "changes.html", ...)
char *from = "updates/update.exe";
char *to = "update.exe.dnld";
ff = FtpFindFirstFile( hFTPSession, from, &FindFrom,
INTERNET_FLAG_RELOAD, NULL );
Then check the file date, and if newer:
FtpGetFile( hFTPSession, from, to, ...) |
|
| Back to top |
|
 |
Mike Collins Guest
|
Posted: Sun Jul 23, 2006 9:18 pm Post subject: Re: file transfur via http and wininet |
|
|
Again Bob, thanks for the reply. It's sunday here so i posted before
settling back for BBQ. However, on further reading (couldn't resist) i
ended up at the same point as you suggested i.e. HttpOpenRequest with the
GET command. Not going to test it till tomorrow but i think that will do
the job. Also, InternetOpenUrl() looks promising. It was basically a lack
in my understanding on how the wininet apis worked and how http operates.
Now i look at it, it seems very foolish to think that the ftp functions
would work with an http connection :)
As for Indy, I'm trying to stay clear of any extra VCL's - it's a security
product that I'm finalising and I'm getting super paranoid - i want to try
and stay as close to the api's as possible - previous posts will give you a
better idea. I've had issues with indy before and the group seems a little
less active than the nativeapi so i thought i'd just stick to the wininet.
It's a GINA product and i'm getting some wired result with certain things
that should normally work but don't.
The server is our own in telehouse - we use it for web hosting as well so
the administrator is a bit anal. We've got an sftp service running but he
didn't want to go down the route of setting an plain ftp server running -
don't ask me why - these guys are always like that.
Will keep
"Bob Gonder" <notbg (AT) notmindspring (DOT) invalid> wrote in message
news:he07c2hikkr27pbml0ioamg8s0lojmfo7e (AT) 4ax (DOT) com...
| Quote: | Mike Collins wrote:
Trying to implement a live update facility and have major problems at
every
turn.
Secondly i need to file transfer via http rather than ftp. The update
server is http not and ftp server. If i open an Internet connection, via
InternetConnect with the flag INTERNET_SERVICE_HTTP, is it possible to use
the ftp related wininet functions i.e. FtpSetCurrentDirectory etc or do i
have to use the http related ones? If so, any pointers on this.
Gambit is going to suggest using Indy 9 instead of rolling your own
HTTP handler. See recent discussion in b.p.c.internet.socket group
"IdFTP problem". There is an example in that thread of using relative
pathing with Indy's HTTP.
I would suppose
hR = HttpOpenRequest( hConnect, "GET",
"relative/path/update.exe",
NULL,NULL, types,flags,0)
Followed by a loop of
do{
InternetReadFile( hR. Buffer, sizeof(Buffer),
&dwNumberOfBytesRead );
WriteFile( hOut, Buffer, dwNumberOfBytesRead,
&dwNumberOfBytesWritten, NULL );
}while( dwNumberOfBytesRead );
As a suggestion, you might also look into InternetOpenUrl() which
claims to be directly useable by InternetReadFile and
InternetFindNextFile() without needing the InternetConnect().
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetopenurl.asp
The http server is on your ISP?
You can usually FTP to the server. That's how the stuff gets there in
the first place. Just use the ftp address you use to upload the web
pages/files.
Such as in your case, likely
static char ftp[]= "ftp.softwareassociates.com";
But, you would need to supply the name and password for access.
The name and password gets you to your default directory.
From there, I just download the relative path:
FtpGetFile( hFTPSession, "changes.html", "changes.html", ...)
char *from = "updates/update.exe";
char *to = "update.exe.dnld";
ff = FtpFindFirstFile( hFTPSession, from, &FindFrom,
INTERNET_FLAG_RELOAD, NULL );
Then check the file date, and if newer:
FtpGetFile( hFTPSession, from, to, ...)
|
|
|
| Back to top |
|
 |
Remy Lebeau (TeamB) Guest
|
Posted: Mon Jul 24, 2006 12:09 am Post subject: Re: file transfur via http and wininet |
|
|
"Mike Collins" <its (AT) TheBottomOfThePost (DOT) com> wrote in message
news:44c3730e$1 (AT) newsgroups (DOT) borland.com...
| Quote: | If i open an Internet connection, via InternetConnect with the
flag INTERNET_SERVICE_HTTP, is it possible to use the
ftp related wininet functions
|
No. You must use the HTTP functions with that handle.
| Quote: | or do i have to use the http related ones?
|
Yes.
Gambit |
|
| Back to top |
|
 |
Remy Lebeau (TeamB) Guest
|
Posted: Mon Jul 24, 2006 12:11 am Post subject: Re: file transfur via http and wininet |
|
|
"Bob Gonder" <notbg (AT) notmindspring (DOT) invalid> wrote in message
news:he07c2hikkr27pbml0ioamg8s0lojmfo7e (AT) 4ax (DOT) com...
| Quote: | Gambit is going to suggest using Indy 9 instead of rolling
your own HTTP handler.
|
Not necessarily. I have nothing against WinInet. Since he's already
writing code for WinInet, there is no reason to abandon it.
Gambit |
|
| Back to top |
|
 |
Mike Collins Guest
|
Posted: Mon Jul 24, 2006 3:04 am Post subject: Re: file transfur via http and wininet |
|
|
:-)
"Remy Lebeau (TeamB)" <no.spam (AT) no (DOT) spam.com> wrote in message
news:44c3ca4b$1 (AT) newsgroups (DOT) borland.com...
> |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|