Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Webclient
[Webclient]数据接收问题
发布于 2019-09-20 20:02:35 浏览:2079
订阅该版
做的是百度语音识别,用的是IOT Board 1.1.0 SDK(iot_http_client例程修改),webclient软件包为最新版本,代码借鉴了论坛一众大神,但是Webclient软件包貌似变化了很多 下面是我的代码: ```c #include
#include
#include
#include
#include
#include
#define POST_FILE_URL "http://vop.baidu.com/server_api?dev_pid=1536&cuid=lxzzzzzxl&token=25.9119f50a60602866be9288f1f14a1059.315360000.1884092937.282335-15525116" char *form_data = "audio/pcm;rate=16000"; void bd(int argc, char **argv) { char *filename = NULL; unsigned char *buffer = RT_NULL; rt_uint8_t *buf = RT_NULL; int content_length = -1, bytes_read = 0; int content_pos = 0; int resp_status = 0; int ret = 0; /* 判读命令是否合法 */ if(argc != 2) { rt_kprintf("web_post_file_bd
"); return; } /* get voice filename */ filename = argv[1]; int fd = open(filename, O_RDONLY, 0); if(fd < 0) { rt_kprintf("open %d fail!
", filename); goto __exit; } /* get the size of file */ size_t length = lseek(fd, 0, SEEK_END); lseek(fd, 0, SEEK_SET); buffer = (unsigned char *) web_malloc(4096); if(buffer == RT_NULL) { rt_kprintf("no memory for receive response buffer.
"); ret = -RT_ENOMEM; goto __exit; } /* 创建客户端会话结构体 */ struct webclient_session *session = webclient_session_create(2048); if(session == RT_NULL) { ret = -RT_ENOMEM; goto __exit; } /* 拼接头部数据 */ rt_kprintf("length: %d
",length); webclient_header_fields_add(session, "Content-Length: %d
", length); webclient_header_fields_add(session, "Content-Type: %s
", form_data); /* 发送POST请求 */ int rc = webclient_post(session, POST_FILE_URL, NULL); if(rc < 0) { rt_kprintf("webclient post data error!
"); goto __exit; }else if (rc == 0) { rt_kprintf("webclient connected and send header msg!
"); }else { rt_kprintf("rc code: %d!
", rc); } while(1) { rt_memset(buffer, 0, 4096); length = read(fd, buffer, 4096); if(length <= 0) { break; } //rt_kprintf("read file data length %d
", length); ret = webclient_write(session, buffer, length); if(ret < 0) { rt_kprintf("webclient write error!
"); break; } rt_thread_mdelay(100); } close(fd); rt_kprintf("Upload voice data successfully
"); if(webclient_resp_status_get(session) != 200) { LOG_E("get handle resposne error!"); //goto __exit; } content_length = webclient_content_length_get(session); rt_thread_delay(100); do { bytes_read = webclient_read(session, buffer, 1024 ); if (bytes_read <= 0) { break; } for(int index = 0; index < bytes_read; index++) { rt_kprintf("%c", buffer[index]); } content_pos += bytes_read; }while(content_pos < content_length); for(int i = 0; i < 4096; i++) { if(buffer* == '[' && buffer[i+1] == '"') { for(int k =i+2; k<4096; k++) { if(buffer[k] == '"') break; rt_kprintf("%c", buffer[k]); } rt_kprintf("
"); } } __exit: if(fd >= 0) close(fd); if(session != NULL) webclient_close(session); if(buffer != NULL) web_free(buffer); return; } MSH_CMD_EXPORT(bd, webclient post file); ``` 这是运行结果: ![微信截图_20190920195834.png](/uploads/201909/20/195858g3bcbbr1vnz6cvdz.png) 我的问题是: 明明能有数据响应,返回也是对的,但是判断状态响应码一直都不是200,然后会有图片中红色的报错,所以我搞不明白这个接收是怎么回事。 上面部分使用的是板载wifi,相同代码的情况下,使用ESP8266-AT组件,结果如下: ![微信截图_20190920203349.png](/uploads/201909/20/203406ux2bf6onbamxo9mn.png) ![微信截图_20190921122400.png](/uploads/201909/21/122533yrxxdulrhrclt778.png) 到底是什么情况?求指教。
查看更多
9
个回答
默认排序
按发布时间排序
霹雳大乌龙
2019-09-20
这家伙很懒,什么也没写!
用的是IOT Board 1.1.0 SDK(iot_http_client例程修改的),webclient软件包用的最新版本。
Cheney_Chen
2019-09-21
这家伙很懒,什么也没写!
看了你的代码,发现一些使用的问题,目前来看你是使用分段上传数据的方式实现 `POST` 功能,webclient 软件包中介绍分段上传数据方式如下: - [POST 请求方式](https://github.com/RT-Thread-packages/webclient/blob/master/docs/user-guide.md#post-%E8%AF%B7%E6%B1%82%E6%96%B9%E5%BC%8F) 可以看到示例中使用 `webclient_handle_response` 函数获取 post 响应数据返回值, 而非你代码中使用的 `webclient_resp_status_get` 函数,你可以更具官方流程介绍文档适当修改一下看看
霹雳大乌龙
2019-09-21
这家伙很懒,什么也没写!
>看了你的代码,发现一些使用的问题,目前来看你是使用分段上传数据的方式实现 POST 功能,webclient 软件包 ... 感谢回复 修改成`webclient_handle_response`函数运行就正常了,但是这个函数有警告,也找不到该函数的定义? 另一个问题,不使用分段上传,是不是可以用`webclient_post_file`函数?
霹雳大乌龙
2019-09-21
这家伙很懒,什么也没写!
>看了你的代码,发现一些使用的问题,目前来看你是使用分段上传数据的方式实现 POST 功能,webclient 软件包 ... AT方式还是跟图片一样的错误,好像是发送不成功。
Cheney_Chen
2019-09-21
这家伙很懒,什么也没写!
>感谢回复 修改成`webclient_handle_response`函数运行就正常了,但是这个函数有警告,也找不到该函数的定 ... `webclient_handle_response` 函数在 wenclient.c 文件中定义,`webclient_post_file` 函数用于上传文件到服务器,没有出处理响应的数据保存到文件,建议你按照现在方式保存响应数据。
Cheney_Chen
2019-09-21
这家伙很懒,什么也没写!
>AT方式还是跟图片一样的错误,好像是发送不成功。 AT 方式能不能给出更多日志信息,比如 RAW 日志,我才能帮你详细分析一下
霹雳大乌龙
2019-09-21
这家伙很懒,什么也没写!
>AT 方式能不能给出更多日志信息,比如 RAW 日志,我才能帮你详细分析一下 正文已贴出RAW日志(不知道是不是那个),AT device软件包用的是2.0.0版本 然后又试了最新版本,就没有这个问题了。
霹雳大乌龙
2019-09-21
这家伙很懒,什么也没写!
>AT 方式能不能给出更多日志信息,比如 RAW 日志,我才能帮你详细分析一下 AT device最新版本运行正常,但是明显感觉比板载wifi慢太多。
Cheney_Chen
2019-09-21
这家伙很懒,什么也没写!
>AT device最新版本运行正常,但是明显感觉比板载wifi慢太多。 这个是 URAT 串口速度限制,能稳定使用就好
撰写答案
登录
注册新账号
关注者
0
被浏览
2.1k
关于作者
霹雳大乌龙
这家伙很懒,什么也没写!
提问
11
回答
53
被采纳
0
关注TA
发私信
相关问题
1
AT组件连接BC26并使用Webclient软件包GET方式请求失败
2
webclient sal_sock每次send 内存就多占几十字 咋排查
3
webclient使用疑惑 ,post上传数据无效,get下载数据
4
w5500通信不稳定。
5
webclient软件包get接口,等不到response header?
6
webclient使用的建議
7
基于官方 webclient 的 http client
8
stm32使用webclient+mbedtls实现get请求及post太慢
9
Webclient无法下载局域网内的文件
10
webclient的post file的sample,需开启哪个文件系统支持
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部