如何使用http和winsock加载网页?

Posted

技术标签:

【中文标题】如何使用http和winsock加载网页?【英文标题】:how to load webpages with http and winsock? 【发布时间】:2013-11-10 11:52:19 【问题描述】:

我是网络编程新手。

当我向服务器(在本例中为 google)发送 http 请求时,此回复:

HTTP/1.1 302 Found
Location: http://www.google.nl/?gws_rd=cr&ei=zXB_UumcEMiU4ASSqYG4Dg
Cache-Control: private Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=0eb6ec4d3c54822b:FF=0:TM=1384083661:LM=1384083661:S=8KDjothF0RLKUwxF; expires=Tue, 10-Nov-2015 11:41:01 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=ewT0so-Raq7uuSU_0DOqs08Ywb4EADK4kyGRnQesMqPx6DY23bHp4S5c9K2WbjCIFKe739Ya4L8VOcmBHm2QY9kR1sDH70L9jBU2XNJG3WrvtWiHH-uawg2Nli7mn1iK; expires=Mon, 12-May-2014 11:41:01 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Date: Sun, 10 Nov 2013 11:41:01 GMT
Server: gws
Content-Length: 258
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic 

我的要求:

HEAD / HTTP/1.1
Host: www.google.com
User-agent: HeadReqSample

我知道 302 代码意味着我得到了重定向,但我应该如何处理呢?如果我连接到其他服务器/网站(www.example.com),我会收到以下回复:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/html
Date: Sun, 10 Nov 2013 11:48:51 GMT
Etag: "359670651"
Expires: Sun, 17 Nov 2013 11:48:51 GMT
Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
Server: ECS (iad/1984)
X-Cache: HIT
x-ec-custom-error: 1
Content-Length: 1270 

我该怎么办?

【问题讨论】:

是否需要使用winsock? WinInet 应该可以工作并且使用起来很简单。 是的,您应该在看到重定向时处理它们。那是他们生活的目的,需要处理。你还想用它们做什么,扔掉然后放弃? 我想学习套接字编程,我正在做的项目是学习目的。所以几乎所有事情都想自己做。 【参考方案1】:

你应该怎么做?这真的取决于你想做什么。但通常情况下,您必须寻找重定向并按照它来显示/显示最终网页。

但总的来说,这真的取决于实际的网页/实现。

例如,程序的实际响应可能隐藏在随重定向发送的标头中,而新位置是人类可读的页面(例如,下载相关的提要阅读器或其他)。

如果你只是想下载一个文件,你可以使用URLDownloadToFile来省去对HTTP头等的担忧。如果你想要一个跨平台的解决方案,使用一些实现下载的库,比如libcurl。

【讨论】:

我只是希望能够加载 hmtl 页面。我自己想要很多东西,所以除了winsock和stl之外没有库。

以上是关于如何使用http和winsock加载网页?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Winsock 中发送文件(http 方式)

C++ 如何使用 Socket 类向 HTTP 服务器发送数据和接收响应

如何向 Delphi WinSock HTTP 上传应用程序添加 HTTPS 支持?

Android中Http加载如何得到Cookie和 WebView 加载网页如何得到的Cookie

Winsock 使用系统代理设置

html 如何使用带固定顶栏的iFrame加载外部网页? //演示:http://embed.plnkr.co/iQQPh92IMjCUoeKK6dac/ //参考:http