如何下载需要登陆才能查看的网页,vc,java实现都可以 我需要下载一些需要登陆才能察看的网页,为此我研究了Wininet相关的技术,好像能够登陆,但登陆后仍然不能下载?好像是需要把登陆时得到的cookie再post给新的链接,具体怎么办,我不清楚,大家给点代码?如果vc实在不行,java的也可以。各位帮帮忙,我都郁闷一天了,谢谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Java有个HttpClient包,现在是3.0吧.去www.apache.org下吧.里面支持比较完整的http协议的,完全能满足你的要求.呵呵其实在C++中URLDownloadToFile能满足你的. URLDownloadToFile,这个给个例子,需要登陆才能下载的例子 用libcurl就可以做到……其实关键是Server的Session问题。现在一般的做法是你登录以后对方设置一个Cookie,里面是Session ID,最重要的就是保留Cookie,要获取你需要的网页的时候在HTTP Header里面加上你的Cookie就OK了(有时候还要改一下User Agent,libcurl默认是发送libcurl的数据,可以改为Mozilla 4.0啥的)如果你要Shell和curl的例子我倒有一个(主要是上次用PERL没有玩起来libcurl的cookie,就只好用PERL+ Shell的形式了……)……如果你时间不紧张,可以直接用libcurl的C APIs,这样基本上是没有问题的 我先问一句,你接触过Unix/类Unix系统吧? 能顺便把你的libcurl的C APIs发一份给我吗,谢谢了 这个……那就比较麻烦了……我的代码用PERL写的,有一些是Unix下面的惯例,估计你看不明白……libcurl的代码可以在curl.haxx.se下载到,我自己用的是FreeBSD下面编译好的library,给你也用不了(不知道Windows下面怎么用ELF的lib……)我把代码贴出来吧(重申,我用的是curl + Shell,不是直接用libcurl)……#! /usr/bin/perl -w#login.pl$cmd = 'curl';$data = 'UserName=xxxx&password=xxx';$command = "$cmd -d '$data' --cookie-jar cookiefile -v http://www.somesite.com/login.asp";print $command, "\n";$page = `$command`;print $page, "\n";#! /usr/bin/perl -w#send.pl$cmd = 'curl';$url = 'http://www.somesite.com/somepage.asp';$urlencoded = `./urlencode.php '$ARGV[0]'`;$data = 'chat0=&addchat='.$urlencoded;$command = "$cmd -d '$data' --cookie cookiefile --cookie-jar cookiefile -v $url";print $page, "\n";#! /usr/local/bin/php#urlencode.php<?php $GB2312 = iconv("UTF-8", "GB2312", $argv[1]); print urlencode($GB2312);?>这里总共三个文件。当你用post提交东西的时候千万记住urlencode!除非你确认提交的东西里面没有http不允许的字符。curl的用法和参数可以在curl的官网查到。祝好运 对话框编程..求救 如何计算CString所占用的字节数? 求 YD-602磁卡读写器开发文档,及示例程序。 当我关闭一个程序的时候。我如何把内存关于这个程序的东西。也关掉! 如何在写文件时换行 随机数产生!请进,这个算法如何实现! 菜鸟问题 【公告】庆贺VC版又出现一位MVP 关于同时执行的思路,希望可以看下代码,为什么我只能在程序初始化的时候上传一个文件 OpenGL在VS Studio 2005 下 显示汉字成了韩文 DirectShow网络播放程序,在网络有数据时,m_MediaControl->Stop()正常,在没有数据时stop会阻塞,怎么解决啊? 数据包是否曾经发生了变化?!
其实在C++中URLDownloadToFile能满足你的.
#login.pl
$cmd = 'curl';
$data = 'UserName=xxxx&password=xxx';
$command = "$cmd -d '$data' --cookie-jar cookiefile -v http://www.somesite.com/login.asp";
print $command, "\n";
$page = `$command`;
print $page, "\n";#! /usr/bin/perl -w
#send.pl
$cmd = 'curl';
$url = 'http://www.somesite.com/somepage.asp';
$urlencoded = `./urlencode.php '$ARGV[0]'`;
$data = 'chat0=&addchat='.$urlencoded;
$command = "$cmd -d '$data' --cookie cookiefile --cookie-jar cookiefile -v $url"
;
print $page, "\n";#! /usr/local/bin/php
#urlencode.php
<?php
$GB2312 = iconv("UTF-8", "GB2312", $argv[1]);
print urlencode($GB2312);
?>这里总共三个文件。当你用post提交东西的时候千万记住urlencode!除非你确认提交的东西里面没有http不允许的字符。curl的用法和参数可以在curl的官网查到。祝好运