完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在使用百度ai开放平台的语音识别功能,读取返回的数据时,使用esp_http_client_read(client, http_data, 1024);读到的数据里没有json的数据,还是http头的信息,这就很奇怪,可以确定的是不是百度服务器的问题,因为我用其他方式调用了该API返回的数据没错。
还有,就是当我的语音录音时说话超过4个字就会出现以上情况,只要不超过4个字,返回的结果中就存在json数据。 我猜测是http输入流的原因,但是实现搞不清楚。 错误的返回如下:它把http头信息读取了。。。。 "} P/1.1 200 OK Connection: keep-alive Content-Type: application/json Date: Sat, 21 Nov 2020 05:06:18 GMT P3p: CP=" OTI DSP C 正确的返回应该是: {"corpus_no":"6897438778089153756","err_msg":"success.","err_no":0,"result":["北京科技馆。"],"sn":"854581213211605935110"} |
|
相关推荐
1个回答
|
|
从您的描述来看,这个问题可能是由于HTTP响应头和响应体没有正确分离导致的。当您使用`esp_http_client_read(client, http_data, 1024);`读取数据时,可能同时读取了HTTP头和响应体。为了解决这个问题,您可以尝试以下步骤:
1. 首先,确保您已经正确地设置了HTTP请求。例如,使用正确的URL、请求方法(如POST或GET)和必要的请求头。 2. 在读取HTTP响应之前,先检查HTTP响应的状态码。通常,状态码为200表示请求成功。您可以使用以下代码片段来检查状态码: ```c esp_err_t err = esp_http_client_get_status_code(client, &status_code); if (err == ESP_OK && status_code == 200) { // 状态码为200,继续处理响应体 } else { // 处理错误情况 } ``` 3. 接下来,尝试使用`esp_http_client_fetch_headers(client, &headers);`来获取HTTP头。这将允许您检查响应头并确保它们已经正确解析。 4. 在读取响应体之前,确保已经读取了所有响应头。您可以使用以下代码片段来实现这一点: ```c bool headers_fetched = false; while (!headers_fetched) { char header_buf[256]; esp_err_t err = esp_http_client_fetch_headers(client, header_buf, sizeof(header_buf), &headers_fetched); if (err != ESP_OK) { // 处理错误情况 } } ``` 5. 最后,使用`esp_http_client_read_response(client, http_data, 1024);`来读取响应体。这将确保您只读取JSON数据,而不是HTTP头。 ```c esp_err_t err = esp_http_client_read_response(client, http_data, 1024); if (err == ESP_OK) { // 处理JSON数据 } else { // 处理错误情况 } ``` 通过以上步骤,您应该能够正确地分离HTTP头和响应体,并避免丢失数据。如果问题仍然存在,请检查您的网络连接和设备性能,以确保它们不会影响数据传输。 |
|
|
|
只有小组成员才能发言,加入小组>>
183个成员聚集在这个小组
加入小组456 浏览 1 评论
1500 浏览 2 评论
625浏览 6评论
519浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
500浏览 5评论
500浏览 4评论
491浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-9 02:56 , Processed in 0.872652 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191