【问题标题】:Getting images with HTTP Request in C在 C 中使用 HTTP 请求获取图像
【发布时间】:2011-11-28 01:10:19
【问题描述】:
我正在用 C 语言编写一个程序,它的作用类似于 Linux 系统中的代理服务器:客户端向它请求一个网页,
它向远程服务器发送 HTTP GET 请求,并获取服务器响应(网页),该响应保存在 .html 文件中。
这是我的问题:大多数网站都有一些对图像的引用,所以当我尝试查看创建的 .html 文件代理时,图像不会出现。
我搜索了很多,但一无所获。有没有办法编写一些代码来获取图像?
提前谢谢你
【问题讨论】:
标签:
c
http-get
http-request
【解决方案1】:
您将不得不编写代码来解析您返回的 HTML 文件并查找图像引用(img 标记),然后向服务器查询这些图像文件。这就是网络浏览器在幕后所做的事情。
您还有一个额外的问题,即 HTML 文件中的图像引用指向原始服务器。我假设由于他们不为您加载返回原始 HTML 的服务器不可用。在这种情况下,在您获得每个图像文件后,您需要在本地文件系统上为其命名,然后更改 HTML 中的引用(以编程方式)以指向新的本地图像名称。
例如:
<img src='http://example.com/image1.png'>
会变成
<img src='localImage1.png'>
如果您要查询任意网站,您还会发现还有各种其他文件需要对 CSS 文件和 JavaScript 文件执行相同操作。一般来说,很难准确地镜像任意网页 - 浏览器具有复杂的对象模型,它们用于解释网页,因为它们必须处理 CSS 和 Javascript 之类的东西,而且您可能需要能够“运行”所有动态代码,甚至确定要从服务器下载哪些文件(例如 JavaScript,包括其他 JavaScript 等)。