首页 > 其他分享 >ESP32 HTTP Client 报错'Error parse url'

ESP32 HTTP Client 报错'Error parse url'

时间:2024-12-24 12:30:15浏览次数:3  
标签:HTTP url xxx 报错 http line config

ESP32 HTTP Client 报错

今天在使用ESP32中的esp_http_client_init如下

//结构体
typedef struct
{
    char url[256];
} config_t;
//主要代码
strncpy(config.url, "http://xxx/xxx", sizeof(config.url) - 1);
config.url[sizeof(config.url) - 1] = '\0'; // 确保字符串以空字符结尾

static char *download_url;
download_url = config.url;
esp_http_client_config_t config = {
    .url = download_url,
    .event_handler = _http_event_handler,
    .user_data = local_response_buffer, 
};
esp_http_client_handle_t client = esp_http_client_init(&config);

运行后报错如下:

E (11912) HTTP_CLIENT: Error parse url http://xxx/xxx
E (11922) HTTP_CLIENT: Failed to set URL

分析错误来源,猜测如下:

  1. 末尾结束符 (这个已经确保)
  2. 字符串长度问题(加了printf打印了%s字符串和长度%d strlen(url)发现了长度比原字符串多了一个)
  3. 是否有未打印的字符 (增加了ASCII打印发现了末尾多了一个回车符\r)

报错猜想查询确定后开始溯源

我的txt文本格式如下:

LS_COLLAR=https://xxx/xxx
LS_SIZE=xxx

我的url来源于txt文本 那么我fopen打开文件读取时,因为有换行,我在处理file时候只处理了\n忘了处理\r,所以打印出来多了一个\r

    FILE *file = fopen(filename, "rb");

    char line[256];
    while (fgets(line, sizeof(line), file))
    {
        // 去除行末的换行符
        line[strcspn(line, "\n")] = 0;
    }

现在加上\r再运行

    FILE *file = fopen(filename, "rb");

    char line[256];
    while (fgets(line, sizeof(line), file))
    {
        // 去除行末的\r\n
        line[strcspn(line, "\r\n")] = 0;
    }

标签:HTTP,url,xxx,报错,http,line,config
From: https://www.cnblogs.com/sixteenccc/p/18627151

相关文章

  • 使用http请求触发jenkins构建
    我的需求:每当有一个post请求发送,触发我jenkins的一个构建,生成一个新docker实例。安装jenkins使用docker构建镜像:https://docker.unsee.techdockerpulljenkins/jenkins:ltsmkdir-p~/jenkins_homesudochown1000:1000~/jenkins_home启动dockerrun-d-p8080:808......
  • 低版本Android发送https请求,Android4.4.2启用TLSv1.2,Android4.4.2发送https请求报错,An
    参考:https://blog.csdn.net/weixin_54087854/article/details/134625241https://blog.csdn.net/weixin_35647799/article/details/117684065Android4.4.2发送https请求时,出现错误:javax.net.ssl.SSLProtocolException:SSLhandshakeaborted:ssl=0xb7eabc88:FailureinSSLlibr......
  • 移动解析HttpDNS
    移动解析HttpDNS从基础库2.19.2开始支持开发者调用wx.request时,可以开启移动解析HttpDNS服务。该服务基于Http协议向服务商的DNS服务器发送域名解析请求,替代了基于DNS协议向运营商LocalDNS发起解析请求的传统方式,可以避免LocalDNS造成的域名劫持和跨网访问问题,解决移动互联......
  • C#队列、多线程根据URL下载文件
    ///<summary>///下载辅助类///</summary>publicclassDownFileHelper{///<summary>///构造函数///</summary>staticDownFileHelper(){Start();}privatestaticobjectlockObject=newobject();......
  • 在VS2022中,“根据模型生成数据库”时报错:已添加了具有相同键的项(或:An item with the s
      解决方法:关闭解决方案,打开解决方案所在文件夹,打开以下文件夹:.vs\ConsoleApp7\FileContentIndex,然后删除里面的所有文件,再重新在VS中打开解决方案重新生成即可 ......
  • XMLHttpRequest的基础知识
    get请求 constxml=newXMLHttpRequest();xml.open("GET","https://jsonplaceholder.typicode.com/todos/1",true);xml.onreadystatechange=function(){if(xml.readyState===4&&xml.status===200){console.log(xml.re......
  • 解决 高版本SpringBoot整合Swagger 启动报错Failed to start bean ‘documentationPlu
    解决高版本SpringBoot整合Swagger启动报错Failedtostartbean‘documentationPluginsBootstrapper‘问题|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|A......
  • 启动opencv报错、jacob报错
    1、明明都添加了对应的maven文件,项目不报红,但运行起来就是报错packagecom.xiangwen.controller;importcom.jacob.activeX.ActiveXComponent;importcom.jacob.com.Dispatch;importcom.jacob.com.Variant;importjava.io.BufferedReader;importjava.io.FileReader;i......
  • php网络编程swoole http
    服务端:<?phpuseSwoole\Http\Server;useSwoole\Http\Request;useSwoole\Http\Response;//创建HTTP服务器$server=newServer('127.0.0.1',9501);$server->on('start',function($server){//print_r($server);echo&qu......
  • python网络编程之http longpull
    服务端:fromflaskimportFlask,request,jsonifyimporttimeapp=Flask(__name__)@app.route('/stream',methods=['GET'])defpoll():#假设这里有一个方法来检查是否有新数据#为了示例,我们简单地模拟等待数据time.sleep(5)#模拟处理时间或等待......