Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Webclient
[Webclient]数据接收问题
发布于 2019-09-20 20:02:35 浏览:2158
订阅该版
做的是百度语音识别,用的是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.2k
关于作者
霹雳大乌龙
这家伙很懒,什么也没写!
提问
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
RT-Thread项目助手v0.2.0 - 支持Env Windows
2
RttreadV5.10上,GD32F450Z RTC时间显示问题
3
rt-smart启动流程分析
4
EtherKit快速上手PROFINET
5
RTThread USB转串口无法接收数据
热门标签
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
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部