关于url的重定位问题

gxtom 2000-03-09 08:21:00
我在编一个网络下载程序。其中遇到的一个问题是url的重定位问题。
如http://www.263.net其实可以重定位到http://www.263.net/index.html
另外还有如http://xx.xx.xx/xx.asp?xxxx等url都有可能会重定位到另外一个url.
我现在是这样解决这个问题的(我使用mfc wininet类):

extern CHttpConnection * pConnection;
extern CHttpFile * pFile;

pFile=pConnection->OpenRequest ("HEAD",strObject,NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_RELOAD);
pFile->SendRequest();
bool res=pFile->QueryInfo(HTTP_QUERY_CONTENT_LOCATION ,strLocation);

但是我发现有的url没法重定位,即res返回FALSE.
Getlasterror()返回错误码12150,
即“ERROR_HTTP_HEADER_NOT_FOUND:The requested header could not be located”

但是同样的url别的软件如telepro却可以重定位,why??
我头都大了,哪为大虾有过这方面经验的能指点一二??
不胜感激!!

...全文
423 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
stupidtom 2000-06-12
  • 打赏
  • 举报
回复
我另外有个问题:http://expert.csdn.net/TopicView.asp?id=10862
white你可以帮我看看有什么办法没有??谢谢!!
gxtom 2000-06-12
  • 打赏
  • 举报
回复
其实取不到影响也不是很大,只不过我以为有办法能够取到,而我却不知道,所以提出来
请教请教。。。
white 2000-06-11
  • 打赏
  • 举报
回复
反正就我现在对HTTP协议的知识,是无法取得这个文件名的,我再查查看。
你为什么非得要知道文件名呢?
gxtom 2000-06-11
  • 打赏
  • 举报
回复
white兄,
谢了,我觉得奇怪为什么不能取到这个文件名??没道理的呀。。。
一个一个试也不是个办法,因为这个文件名是可以由管理员随意指定的。。
送上100分,请您笑纳。。:)

btw,不好意思,我回复时不知是ie还是csdn程序的问题,它老是提示无法连接,
然后我拼命地重试,然后就。。。。。sorry,:-)
white 2000-06-11
  • 打赏
  • 举报
回复
:-)我还以为CSDN的程序出了问题呢,收到许多封邮件。
我也没办法获得这个文件名。事实上,浏览器也没有获得这个文件名。
如果你真要获得,那也许只好一个一个试了,比如用index.htm,index.html,default.hem , defautl.html.......等等一个一个试:-)
white 2000-06-10
  • 打赏
  • 举报
回复
sorry,真的没大明白您的意思:-)
我假设你是要用程序来获取一个文件的内容,那么,如果这个URL的格式为:
http://www.nn.gx.cn或者http://www.nn.gx.cn/ ,则直接可以在连到服务器后
发请求 GET / HTTP/1.1就可以获取文件内容了,如果格式为:
http://www.nn.gx.cn/gongan/1.html,则发请求 GET /gongan/1.html就可以了。
如果你正确收到文件内容,那么WININET返回的状态码为200,如果你请求的URL
被重定向到另一个地址,比如,http://www.chinamotion.com/,访问时就会
被重定向到 http://www.chinamotion.com/business/default.asp,那么你在
发了第一次请求后,服务器会返回302错误码,然后你可以在响应头里查Location字段,
可以知道应该请求 /business/default.asp。

实际上,IE本身就是用WinInet来实现的文件请求的,如果你在OpenRequest时给参数
允许自动处理重定向,则WinInet根本就会自动地处理这些问题的。
gxtom 2000-06-10
  • 打赏
  • 举报
回复
white兄,
非常抱歉没有说清楚这个问题.我知道只要对http:\\www.nn.gx.cn这样的url发get请求
就可以得到页面内容.但我现在想要得到的是首页的确切名称,如index.htm或default.htm或其他
等等.我该怎么办?
gxtom 2000-06-09
  • 打赏
  • 举报
回复
white兄,我试过好多网站是可以定位到首页的野。如http:\\www.nn.gx.cn等等。
另外如果象你说的不能从定位,浏览器又是如何做到这一点的呢??
white 2000-06-09
  • 打赏
  • 举报
回复
我不知道你的目的是要干什么,我刚刚也遇到过类似的一个问题。
不过有一点,当你请求类似 http://www.263.net/ 这样的URL时,本来就不会
返回Location信息的,你用什么socket方法都不行,不信你自己用TELNET试一
下。
这是因为,当你请求 http://www.263.net/ 时,在服务器上本来就没做重定向,
只有当你请求的是 http://www.263.net/file1.htm 被转到
http://www.263.net/file2.htm的时候,服务器才会在响应头里给出location
信息。

对于这种情况,你直接用 GET / 就可以获得文件了,对于真的有重定向的文件,
WININET会给你一个301或302错,你再从响应头里取location,然后发请求
Kevin_qing 2000-06-06
  • 打赏
  • 举报
回复
使用基于socket的HTTP request

不要用microsoft的烂东西!
自己查找HTTP CODE

4,354

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧