HTTP请求:
#include
#include
#include
#include
// Http请求内容
sta
tic const char send_data[] =
"GET /v1.0/device/
13855/sensor/22988/datapoints HTTP/1.1
"
"U-ApiKey:[your apikey]
"
"Host: api.yeelink.net
";
void tcpclient(const char* host_name, int port)
{
(void)port;
char *recv_data;
int sock, bytes_received;
struct hostent *yeelink_host;
struct in_addr yeelink_ipaddr;
struct sockaddr_in yeelink_sockaddr;
recv_data = rt_malloc(1024);
if (recv_data == RT_NULL)
{
rt_kprintf("No memory
");
return;
}
// 第一步 DNS地址解析
rt_kprintf("calling gethostbyname with: %s
", host_name);
yeelink_host = gethostbyname(host_name);
yeelink_ipaddr.s_addr = *(unsigned long *) yeelink_host->h_addr_list[0];
rt_kprintf("Yeelink IP Address:%s
" , inet_ntoa(yeelink_ipaddr));
yeelink_sockaddr.sin_family = AF_INET;
yeelink_sockaddr.sin_port = htons(80);
yeelink_sockaddr.sin_addr = yeelink_ipaddr;
rt_memset(&(yeelink_sockaddr.sin_zero), 0, sizeof(yeelink_sockaddr.sin_zero));
while(1)
{
// 第二步 创建套接字
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
rt_kprintf("Socket error
");
rt_free(recv_data);
return;
}
// 第三步 连接yeelink
if (connect(sock, (struct sockaddr *)&yeelink_sockaddr, sizeof(struct sockaddr)) == -1)
{
rt_kprintf("Connect fail!
");
lwip_close(sock);
rt_free(recv_data);
return;
}
// 第4步 发送Http请求
send(sock,send_data,strlen(send_data), 0);
// 第5步 获得Http响应
bytes_received = recv(sock, recv_data, 1024 - 1, 0);
recv_data[bytes_received] = ' ';
// 响应内容为 {"timestamp":"2013-11-19T08:50:11","value":1}
// 截取“value”之后的内容
char* actuator_info = rt_strstr( recv_data , ""value"");
int offset = rt_strlen(""value":");
actuator_status = *(actuator_info + offset);
rt_kprintf("actuator status :%c
",actuator_status);
// 获得开关状态,并设置LED指示灯
char actuator_status;
(actuator_status == '1')?rt_hw_led_on(0):rt_hw_led_off(0);
rt_memset(recv_data , 0 , sizeof(recv_data));
// 关闭套接字
closesocket(sock);
// 延时5S之后重新连接
rt_thread_delay( RT_TICK_PER_SECOND * 5 );
}
}
上面请求可以返数据
HTTP/1.1 200 OK
Server: nginx/1.0.14
Date: Sun, 24 Feb 2013 12:07:24 GMT
Content-Type: text/html
Connection: keep-alive
X-Powered-By: PHP/5.3.10
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Vary: Accept-Encoding
Content-Length: 45
{"timestamp":"2013-02-24T20:05:44","value":0}
参照上面的例子做HTTPS请求就无数据返,
通过
chrome浏览器的插件postman对HTTPS请求抓取
https://api.bmob.cn/1/classes/data
X-Bmob-Application-Id: 3905befafce61b6bdca1acf4a20b4bda
X-Bmob-REST-API-Key: b2cf3b28ce0a9335b1ed9c4b075f8862
有数据返回,
抓取Http请求内容:
GET /1/classes/data HTTP/1.1
Host: api.bmob.cn
X-Bmob-Application-Id: 3905befafce61b6bdca1acf4a20b4bda
X-Bmob-REST-API-Key: b2cf3b28ce0a9335b1ed9c4b075f8862
Cache-Control: no-cache
服务器IP:
IP 180.150.177.117:443
通过IP可以链接到服务器,发送请求也成功。就是无数据返回!想了两天没想明白贴出来大家帮我分析一下!
https刚接触,stm32哪个系列是能支持https的呢,因为他不是涉及加密么
一周热门 更多>