curl post数据超限问题优化

最近通过CURL执行任务时发现数据一多就会报错,错误信息如下:

/usr/bin/curl: Argument list too long

Argument list too long,参数列表过长,简单说就是post的数据长度超过了限制。

解决办法如下:

1
2
3
4
5
6
7
8
9
curl -X POST -H 'content-type: application/json' \
-d @- 'https://www.baidu.com' <<CURL_DATA
{
"msgtype": "text",
"text": {
"content": ""
},
}
CURL_DATA

通过引入一个here document结构来包含较大的数据。做PHP开发的同学应该很熟悉,heredoc与nowdoc其实是一个东西,都来自 Here document 有兴趣的同学可以点击链接了解下。

下面是一些CURL的常见用法

GET

1
curl https://api.github.com/user?access_token=XXXXXXXXXXNoneCopy

POST

  1. 普通POST请求

    1
    curl --data "param1=value1&param2=value" https://api.github.com
  2. 特殊字符的POST请求

    1
    curl --data-urlencode "param1=中文&param2=空 格" https://api.github.com
  1. 上传文件

    1
    curl --form "fileupload=@filename.txt" https://api.github.com
  2. 301重定向

    1
    curl -L http://www.google.comNoneCopy
  3. 断点下载

    1
    curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html