【linux环境下用curl库的get请求报错】

当在Linux环境中使用curl库进行GET请求时,如果请求参数中含有换行符,会导致URL格式不正确,返回错误码3。这个问题在POST请求中不会出现,因为POST请求通常允许更多数据格式。解决方案是检查并移除参数中的回车换行符,确保URL的正确性。经过处理后,GET请求能够正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux环境下用curl库的get请求报错:3 URL格式不正确 URL using bad/illegal format or missing URL

报错的日志

curl错误码是3 URL格式不正确->URL格式错误。语法不正确。:[URL using bad/illegal format or missing URL]
同样的请求参数复制出来用curl命令测试,或用postman工具测试都是正常的,只有在代码中调用curl库会报错;而且只有get请求会报错,post请求是正常的
在这里插入图片描述

问题原因

请求参数后面多了一个换行符
在这里插入图片描述

解决办法

就是把参数中的回车换行符去掉,比如这种方式:

//获取设备序列号
void Func_GetDeviceSN(char szID[33], int nIDSize)
{
	int iLen = 0;

	//调用接口获取设备序列号
	GetIDFromSNTxt(szID, nIDSize);//这个接口获取到的序列号可能会有换行符,有换行符的参数拼到GET请求的参数后面会导致curl库中报错:错误码3 URL格式不正确->URL格式错误。语法不正确。:[URL using bad/illegal format or missing URL]

	szID[nIDSize-1] = 0x00;
	iLen = strlen((const char*)szID);
	if( iLen > 0 )
	{
		//把回车换行符取掉
		if(szID[iLen-1] == '\n')
		{
			szID[iLen-1] = 0x00;
		}
		if(szID[iLen-2] == '\r')
		{
			szID[iLen-2] = 0x00;
		}
	}
}

有换行符的参数放到post请求里面可以正常使用,就是放到get请求中就会报错
参数去掉后面的换行符后再拼到get请求里面,调用curl接口就正常了
问题虽然处理了,但是还没弄懂这个报错的根本原因,还请各位大哥补充解惑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值