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接口就正常了
问题虽然处理了,但是还没弄懂这个报错的根本原因,还请各位大哥补充解惑