如何使用CURL中的--data选项发送请求体和边界定界符

时间:2017-07-26 14:42:57

标签: http curl

我是新来的卷曲。 我使用curl使用shell脚本上传文件。 我必须显式设置边界分隔符,并通过传递几个字段来发出HTTP请求。

我有几个问题:

  1. 是否可以使用GET方法显式设置边界分隔符? 如果是,怎么做?

  2. 如果没有,那么可以在POST方法中使用这样的东西(检查--data的参数)

  3. curl --data" - 4ebf00fbcf09 & AB = MSG& tableView = simple& orient = UP& x-895892-n = 1 &安培; X-128754-O = 2和X-974573-P = 1&安培;客户=浏览器与d-984303-S =创建&安培;的 - 4ebf00fbcf09 - " --header" Content-Type:multipart / form-data;边界= 4ebf00fbcf09"
    www.xyz.com

    非常感谢!

1 个答案:

答案 0 :(得分:1)

这些分隔符用于多部分formposts,如果您确保使用--form而不是--data,curl会自动为您处理分隔符。

curl' s -d和-F之间的区别也在curl book in sectionly标题为" -d vs -F"。

中进行了解释。

手动方式

如果你真的想自己设置边界,你需要自己构建整个formpost RFC1867

用于发送两个值的shell脚本" name = foo"和"值= 42":

#/bin/sh
boundary="------------------------2100d47bb8839948"

# generate the body
echo "$boundary" > post
echo 'Content-Disposition: form-data; name="name"' >> post
echo "" >> post
echo "foo" >> post
echo "$boundary" >> post
echo 'Content-Disposition: form-data; name="value"' >> post
echo "" >> post
echo "42" >> post

## final boundary uses two extra dashes
echo "$boundary--" >> post

curl -H "Content-Type: multipart/form-data; boundary=$boundary" localhost --data-binary @post