我使用HTTP下载了一些图像。我得到了这些图像的URL,如何构建基于TCP的HTTP缓冲区来下载图像?
我目前的平台上没有库,这个平台唯一支持的语言是C,所以我必须为这些资源构建HTTP缓冲区。
目前我已经构建了正常的API请求,它们都是HTTP请求,每个请求都有0个或更多参数。但图像请求只有一个URL,例如 http://some-image.jpg ,它似乎只是一个下载作业,没有API参数,没有授权,它是简单,但如何构造TCP请求?
答案 0 :(得分:3)
您必须实现HTTP协议或其子集。有开源实现。例如:
答案 1 :(得分:1)
如何构建基于TCP的HTTP缓冲区来下载图像?
停止思考TCP。它有自己的缓冲区,与HTTP级别的内容无关。
你真的不想实现自己的HTTP堆栈 - 这不是微不足道的。有几个写得很好的 - 我建议使用libcurl。
答案 2 :(得分:1)
根据http://www.jmarshall.com/easy/http/#sample,我建立了我的TCP请求:
sprintf(tcp_send_buf, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", img_path, img_host);
/* I wrapped TCP APIs for convenient, hope you understand it... */
set_host_and_port(img_host, 80);
tcp_send(tcp_send_buf, strlen(tcp_send_buf), recv_callback);
在我的recv_callback
上,我收到了类似的服务器响应:
HTTP/1.1 200 OK
Content-Length: 42299
Content-Type: image/jpeg
Last-Modified: Mon, 02 Jul 2007 07:58:47 GMT
Accept-Ranges: bytes
ETag: "e2c8b5d17ebcc71:15d5"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Fri, 25 May 2012 01:33:57 GMT
<binary image data>
我从Chrome下载了图片,其大小与Content-Length: 42299
相同,我想我已经获得了图片缓冲区。