tag 标签: http客户端

相关博文
  • 热度 14
    2012-11-16 10:31
    970 次阅读|
    0 个评论
      让单片机嵌入HTTP(超级文本传输协议)客户端是一个很好的添加功能,HTTP客户端可以让嵌入式设备从HTTP服务器获取数据。今天给大家介绍的是基于WIZnet W5200的HTTP客户端模块,能够集成到STM32 Cortex M3单片机产品的几乎所有应用中。具体内容如下: 1 简介 嵌入式HTTP(超级文本传输协议)客户端对所有支持网络功能的设备来说是一个很好的添加功能。HTTP客户端可以让嵌入式设备从HTTP服务器获取数据。 该WIZnet W5200 HTTP客户端应用笔记介绍的W5200E01-M3板子,提供一个完整的HTTP客户端模块,它能够集成到STM32 Cortex M3单片机产品的几乎所有应用中。IAR 5.41用来编译该HTTP客户端应用程序。W5200E01-M3板子用来运行该HTTP客户端应用。 该文档中提到的所有的代码和文件可以从下面的链接下载 www.wiznet.co.kr/w5200/download。 1.1 假设 假设读者对WIZnet W5200驱动是熟悉的。当然读者也需要熟悉C语言编程和HTTP客户端的概念。上述这些技术的术语将在这篇文章中用到,并且只提供简短的概述。鼓励一些高级用户去阅读相关的规范。 1.2 特点 该HTTP客户端不具有完整的HTTP客户端功能;本文的HTTP客户端是针对嵌入式系统的小型客户端。 这里提供的HTTP客户端具有以下特点: • 可移植到STM32 Cortex M3系列32位单片机平台 • 支持内容解析 • 支持串口打印信息(见图1)   图1. HTTP客户端演示图 1.3 局限性 针对嵌入式系统设计的HTTP客户端往往没有足够的缓存去接接收“大”的网页(在该应用笔记中,http客户端的最大接收缓存是4K字节,当然,考虑到STM32F103C8的SRAM的存储空间,用户可以按需求对缓存进行扩展)。推荐用简单的text/html内容网页访问。如果接收缓存不够了,HTTP客户端将自动重启。   2 HTTP 协议概述 HTTP是超级文本传输协议的缩写。HTTP的功能是在客户端-服务器计算机模式下作为请求-应答协议。例如,在HTTP下,网络浏览器作为客户端,运行在计算机上的打开网址的应用程序作为服务器。客户端向服务器提交HTTP请求消息。保存内容,或提供资源(如HTML文件,或执行其他客户端功能)的服务器返回一个应答消息给客户端。这个应答包括请求的完成状态信息,这个消息可能会包括客户端任何的请求内容。 HTTP客户端的通信过程大致分为三步。 连接:W5200分配socket到HTTP客户端,打开socket并连接到http服务器。 通信:连接建立了。W5200发送HTTP请求和接收来自服务器的HTTP应答。 关闭:HTTP 请求/应答完成后关闭连接。 HTTP是一个应用层协议,在网络协议框架内。协议定义假设有一个可靠的主机到主机数据传输的传输层协议。TCP是占主导地位的协议。 W5200已经嵌入到以太网,IP和TCP层。因此,HTTP客户端可以很容易的实现,通过W5200的API函数(socket(),listen(),connect(),send(),receive()等等),这些函数都在W5200驱动中。下图展示了W5200的框图。 2.1 HTTP会话 一个HTTP会话是一系列的网络请求-响应传输。HTTP客户端通过建立一个TCP连接到服务器上的特定端口(一般都是端口80)来初始化一个请求。监听该端口HTTP服务器等待客户端的请求消息。一旦接收该请求,服务器返回一个状态行,如“HTTP/1.1 200 OK”,和一个自己的消息,该消息也许是所请求的资源,一个错误信息,或一些其他信息。 2.2 请求消息 请求消息包括下面这些:: 向服务器请求称作 /images/logo.png 的 请求行,如 GET /images/logo.png HTTP/1.1 头部,如 Accept-Language: en 注意: 在HTTP/1.1协议里,除了Host外所有头部是可选。 一个空行。 一个可选的信息体。 例如,下面是最简单的 HTTP Get 请求: 该请求行和头部必须以CRLF结束(一个回车后跟换行)。空行必须只包括CRLF并且没有其他空白。虽然需要CRLF,但大部分服务器也接受只有LF。 2.3 请求方法 HTTP定义了9种方法指示在标识的资源上执行期望的动作。这里HTTP客户端不支持完整的HTTP客户端功能;它针对嵌入式系统的小型客户端。只可使用GET 方法。 GET: 向特定的资源发出请求。 3 HTTP 客户端 3.1 HTTP文档 下面HTTP页是用来演示HTTP客户端。可以通过是DOCTYPE HTTP 的(b) HTTP Source来检查。 注意:如前面说的, HTTP Document (img, txt, etc) 的大小,需要考虑 STM32F108C8 的内存大小。 (a)HTTP文档 图 5. HTTP Document和HTML source 3.1.1 测试 3.2 演示 3.2.1 设置超级终端 从网上下载一个免费的超级终端做如下设置: 3.2.2 输入URL 3.2.3 DNS, HTTPc和Output Doc 3.2.4 结果 图 8. IE7显示解析的数据 4. HTTP 客户端实现 HTTP客户端运行在TCP客户端模式。TCP客户端模式通过连接到服务器工作(Connect),在连接建立后(ESTABLISHED)客户端可以发送/接收数据。获得更多的信息,请参考W5200 数据手册(Datasheet)或文档‘如何在W5200中实现TCP ’(‘How to implement TCP in W5200’)。 扩展TCP Loopback示例代码来执行FTTP客户端。下图是HTTP客户端的流程图。 图 8. 基于W5200的HTTP客户端流程图 以下代码显示了HTTPc 的main.c。HTTPc解析URL作为URL的域名和URL路径。当DNS获得了IP, HTTPc将打开。HTTPc连接到上面流程图中的服务器。该请求信息将在连接后再次发送。服务器接收到请求后将发送数据。 注意:在该应用中用了一个简单的算法去解析接收到的数据。为了解析不同的接收数据,用户必须修改这部分的解析程序。 谢谢关注,关于此篇博文,如果您有任何疑问,欢迎您评论留言,也欢迎您联系我们!我们的官网博客:blog.iwiznet.cn 官方网站:www.iwiznet.cn
  • 热度 20
    2012-11-16 10:16
    1222 次阅读|
    0 个评论
      让单片机嵌入HTTP(超级文本传输协议)客户端是一个很好的添加功能,HTTP客户端可以让嵌入式设备从HTTP服务器获取数据。今天给大家介绍的是基于WIZnet W5200的HTTP客户端模块,能够集成到STM32 Cortex M3单片机产品的几乎所有应用中。具体内容如下: 1 简介 嵌入式HTTP(超级文本传输协议)客户端对所有支持网络功能的设备来说是一个很好的添加功能。HTTP客户端可以让嵌入式设备从HTTP服务器获取数据。 该WIZnet W5200 HTTP客户端应用笔记介绍的W5200E01-M3板子,提供一个完整的HTTP客户端模块,它能够集成到STM32 Cortex M3单片机产品的几乎所有应用中。IAR 5.41用来编译该HTTP客户端应用程序。W5200E01-M3板子用来运行该HTTP客户端应用。 该文档中提到的所有的代码和文件可以从下面的链接下载 www.wiznet.co.kr/w5200/download。 1.1 假设 假设读者对WIZnet W5200驱动是熟悉的。当然读者也需要熟悉C语言编程和HTTP客户端的概念。上述这些技术的术语将在这篇文章中用到,并且只提供简短的概述。鼓励一些高级用户去阅读相关的规范。 1.2 特点 该HTTP客户端不具有完整的HTTP客户端功能;本文的HTTP客户端是针对嵌入式系统的小型客户端。 这里提供的HTTP客户端具有以下特点: • 可移植到STM32 Cortex M3系列32位单片机平台 • 支持内容解析 • 支持串口打印信息(见图1)   图1. HTTP客户端演示图 1.3 局限性 针对嵌入式系统设计的HTTP客户端往往没有足够的缓存去接接收“大”的网页(在该应用笔记中,http客户端的最大接收缓存是4K字节,当然,考虑到STM32F103C8的SRAM的存储空间,用户可以按需求对缓存进行扩展)。推荐用简单的text/html内容网页访问。如果接收缓存不够了,HTTP客户端将自动重启。   2 HTTP 协议概述 HTTP是超级文本传输协议的缩写。HTTP的功能是在客户端-服务器计算机模式下作为请求-应答协议。例如,在HTTP下,网络浏览器作为客户端,运行在计算机上的打开网址的应用程序作为服务器。客户端向服务器提交HTTP请求消息。保存内容,或提供资源(如HTML文件,或执行其他客户端功能)的服务器返回一个应答消息给客户端。这个应答包括请求的完成状态信息,这个消息可能会包括客户端任何的请求内容。 HTTP客户端的通信过程大致分为三步。 连接:W5200分配socket到HTTP客户端,打开socket并连接到http服务器。 通信:连接建立了。W5200发送HTTP请求和接收来自服务器的HTTP应答。 关闭:HTTP 请求/应答完成后关闭连接。 HTTP是一个应用层协议,在网络协议框架内。协议定义假设有一个可靠的主机到主机数据传输的传输层协议。TCP是占主导地位的协议。 W5200已经嵌入到以太网,IP和TCP层。因此,HTTP客户端可以很容易的实现,通过W5200的API函数(socket(),listen(),connect(),send(),receive()等等),这些函数都在W5200驱动中。下图展示了W5200的框图。 2.1 HTTP会话 一个HTTP会话是一系列的网络请求-响应传输。HTTP客户端通过建立一个TCP连接到服务器上的特定端口(一般都是端口80)来初始化一个请求。监听该端口HTTP服务器等待客户端的请求消息。一旦接收该请求,服务器返回一个状态行,如“HTTP/1.1 200 OK”,和一个自己的消息,该消息也许是所请求的资源,一个错误信息,或一些其他信息。 2.2 请求消息 请求消息包括下面这些:: 向服务器请求称作 /images/logo.png 的 请求行,如 GET /images/logo.png HTTP/1.1 头部,如 Accept-Language: en 注意: 在HTTP/1.1协议里,除了Host外所有头部是可选。 一个空行。 一个可选的信息体。 例如,下面是最简单的 HTTP Get 请求: GET /index.html HTTP/1.1\r\n Host: www.example.com\r\n \r\n   该请求行和头部必须以结束(一个回车后跟换行)。空行必须只包括并且没有其他空白。虽然需要,但大部分服务器也接受只有。 2.3 请求方法 HTTP定义了9种方法指示在标识的资源上执行期望的动作。这里HTTP客户端不支持完整的HTTP客户端功能;它针对嵌入式系统的小型客户端。只可使用GET 方法。 GET: 向特定的资源发出请求。 3 HTTP 客户端 3.1 HTTP文档 下面HTTP页是用来演示HTTP客户端。可以通过是DOCTYPE HTTP 的(b) HTTP Source来检查。 注意:如前面说的, HTTP Document (img, txt, etc) 的大小,需要考虑 STM32F108C8 的内存大小。 (a)HTTP文档 图 5. HTTP Document和HTML source 3.1.1 测试 3.2 演示 3.2.1 设置超级终端 从网上下载一个免费的超级终端做如下设置: 3.2.2 输入URL 3.2.3 DNS, HTTPc和Output Doc 3.2.4 结果 图 8. IE7显示解析的数据 4. HTTP 客户端实现 HTTP客户端运行在TCP客户端模式。TCP客户端模式通过连接到服务器工作(Connect),在连接建立后(ESTABLISHED)客户端可以发送/接收数据。获得更多的信息,请参考W5200 数据手册(Datasheet)或文档‘如何在W5200中实现TCP ’(‘How to implement TCP in W5200’)。 扩展TCP Loopback示例代码来执行FTTP客户端。下图是HTTP客户端的流程图。 图 8. 基于W5200的HTTP客户端流程图 以下代码显示了HTTPc 的main.c。HTTPc解析URL作为URL的域名和URL路径。当DNS获得了IP, HTTPc将打开。HTTPc连接到上面流程图中的服务器。该请求信息将在连接后再次发送。服务器接收到请求后将发送数据。 注意:在该应用中用了一个简单的算法去解析接收到的数据。为了解析不同的接收数据,用户必须修改这部分的解析程序。 谢谢关注,关于此篇博文,如果您有任何疑问,欢迎您评论留言,也欢迎您联系我们!官方博客:blog.iwiznet.cn 官方网站:www.iwiznet.cn
  • 热度 35
    2012-6-6 09:50
    1170 次阅读|
    0 个评论
    大家好,前天为大家分享了WIZnet的用户手册 如何用W7100A实现HTTP客户端 (一),今天继续为大家分享第二部分。 如何用W7100A实现HTTP客户端 (一)请参考:http://forum.eet-cn.com/BLOG_ARTICLE_12585.HTM   2.3  演示   2.3.1 设置超级终端机(Hyper terminal)     如下所示设置超级终端机(Hyper Terminal),向W7100A输入URL并且显示调试结果。  超级终端机(Hyper Terminal)的设置     2.3.2 输入URL 示范. 1    2.3.3 DNS, HTTPc和输出Doc     示范. 2    2.3.4 串口输出结果     (a)解析的数据 (b)网页 示范. 3   3. HTTP 客户端的实现      本示例中的HTTP客户端在TCP客户端模式下执行。TCP客户端模式通过连接到服务器工作,并且在建立连接之后可以发送/接收数据。更多的详细信 息,请参考网络嵌入式MCU W7100A数据手册的9.2.1节或者文档‘如何使用W7100A实现TCP通信’。图4为HTTP客户端的程序流程图。                                                                   图4 HTTPc流程图 下面的代码显示了HTTPc下的main.c函数。HTTPc将URL解析为URL域和URL路径。当DNS获得服务器IP时,HTTPc就会调 用。上图中虚线所示部分为HTTPc连接到服务器的流程。在连接建立之后,请求信息会被发送。服务器接收到请求信息之后将响应请求并且发送数据。 (注意) 在这个应用中,使用了一个简单的算法来解析接收到的数据。为了能够有区别地解析接收到的数据,用户可以修改解析部分程序代码。   main.c   /* Scanf URL */   95: /* Do DNS Client */ 96: memset(HTTPs_IP,0,sizeof(HTTPs_IP)); 97:    done_dns = dns_query(s, url_dn, HTTPs_IP);   99:    while( done_dns == 1 ){ // on success, done_dns is '1' 100:  /* ouput for LCD : DSN SERVER IP */ 101:  evb_set_lcd_text(0,"DNS SERVER IP  "); 102:  sprintf(str,"%.3bu.%.3bu.%.3bu.%.3bu", 103:  HTTPs_IP , HTTPs_IP , HTTPs_IP , HTTPs_IP ); 104:  evb_set_lcd_text(1,str);   106:  /* Do HTTP Client */ 107:  done_http = http_client(s, HTTPs_IP, url_path, data_buf); 108:  if(done_http) { // on success, done_dns is not  '0'   /* parsed Part */   /* print parsed data */ } main.c代码
  • 热度 28
    2012-6-6 09:28
    1695 次阅读|
    0 个评论
    大家好,前天为大家分享了WIZnet的用户手册 如何用W7100A实现HTTP客户端 (一),今天继续为大家分享第二部分。 如何用W7100A实现HTTP客户端 (一)请参考:http://bbs.ednchina.com/BLOG_ARTICLE_3004568.HTM   2.3  演示   2.3.1 设置超级终端机(Hyper terminal)     如下所示设置超级终端机(Hyper Terminal),向W7100A输入URL并且显示调试结果。  超级终端机(Hyper Terminal)的设置     2.3.2 输入URL 示范. 1    2.3.3 DNS, HTTPc和输出Doc     示范. 2    2.3.4 串口输出结果     (a)解析的数据 (b)网页 示范. 3   3. HTTP 客户端的实现      本示例中的HTTP客户端在TCP客户端模式下执行。TCP客户端模式通过连接到服务器工作,并且在建立连接之后可以发送/接收数据。更多的详细信 息,请参考网络嵌入式MCU W7100A数据手册的9.2.1节或者文档‘如何使用W7100A实现TCP通信’。图4为HTTP客户端的程序流程图。                                                                   图4 HTTPc流程图 下面的代码显示了HTTPc下的main.c函数。HTTPc将URL解析为URL域和URL路径。当DNS获得服务器IP时,HTTPc就会调 用。上图中虚线所示部分为HTTPc连接到服务器的流程。在连接建立之后,请求信息会被发送。服务器接收到请求信息之后将响应请求并且发送数据。 (注意) 在这个应用中,使用了一个简单的算法来解析接收到的数据。为了能够有区别地解析接收到的数据,用户可以修改解析部分程序代码。   main.c   /* Scanf URL */   95: /* Do DNS Client */ 96: memset(HTTPs_IP,0,sizeof(HTTPs_IP)); 97:    done_dns = dns_query(s, url_dn, HTTPs_IP);   99:    while( done_dns == 1 ){ // on success, done_dns is '1' 100:  /* ouput for LCD : DSN SERVER IP */ 101:  evb_set_lcd_text(0,"DNS SERVER IP  "); 102:  sprintf(str,"%.3bu.%.3bu.%.3bu.%.3bu", 103:  HTTPs_IP , HTTPs_IP , HTTPs_IP , HTTPs_IP ); 104:  evb_set_lcd_text(1,str);   106:  /* Do HTTP Client */ 107:  done_http = http_client(s, HTTPs_IP, url_path, data_buf); 108:  if(done_http) { // on success, done_dns is not  '0'   /* parsed Part */   /* print parsed data */ } main.c代码
  • 热度 21
    2012-6-4 09:20
    1141 次阅读|
    0 个评论
    1.  简介 HTTP ( 超文本传输协议 ) 是分布式、协作型和超媒体信息系统的一种协议。在这篇应用手册中,将会介绍如何使用 W7100A 来实现 HTTP 客户端。  1.1 HTTP HTTP 通信过程 (1)     浏览器 (Web Browser) 连接到网页服务器 (Web Server) -         连接 URL 中的服务器 -         默认端口号为 80 (2).     浏览器创建包括 URL 的请求 信 息并且把 信 息发送给网页服务器。 (3).     网页服务器生成响应 信 息,响应信息包含 HTTP 文档和请求 信 息的头 (Header) ,然后将它回送给浏览器。 -         响应头 (response-header) 包括响应是否被成功发送的信息以及数据类型 ( 文本、图像、视频片段等等 ) 。 -         在发送响应头之后发送实际的数据 (4). 在响应信息被发送之后,网页服务器(Web Server)将断开连接。   2. HTTP客户端演示 如图1所示,我们将使用iMCU7100EVB来实现HTTP客户端功能。W7100A请求下载网页服务器上的文档。下载的HTTP文本文档能够通过RS232端口在测试PC机上输出出来。 图1 HTTP客户端演示图   2.1  HTTP文档 我们将使用下面的 HTTP 页面来进行 HTTP 客户端演示,如图 2(a) 所示, IE 浏览器中的页面可以通过查看网页源码的方法获得到其 HTML 源码,如图 2(b) 所示。 注意 用户必须要考虑到HTTP文档的大小(img、 txt等等)以及W7100A的存储器或者外部存储器是否满足条件。 (a) IE浏览器所显示的页面 (b) 该页面的 HTML 源代码 图 2 HTTP 文档示例 2.2  测试   图 3 HTTP客户端演示流程图 去掉 ‘http://’ 部分的 URL 然后输入 : tycho.usno.navy.mil/cgi-bin/timer.pl 通过域名解析获得该服务器的 IP 地址。 使用获得的 IP 地址连接到网页服务器。 发送请求信息并且从网页服务器下载 HTTP 文档。 将 HTTP 文档保存到存储器。 解析 HTML TAG 完成后,通过串口输出下载的 HTTP 文档。