使用curl url数据编码,url不带querystring



我有一个api服务器支持这种格式的url

api.add_resource(Component, '/mycustom-url/<string:text>',
methods=['GET'])

我需要支持它与curl一起使用

字符串可能是阿拉伯语,所以我们需要在使用curl发送之前使用urlencode。我想直接通过curl命令来完成。

在文档中,我可以看到使用-d查询字符串

curl -d "name=curl" https://example.com

是否有一种方法可以将其用于完整的urlencode或最后一个参数部分?

eg:我想能够调用curl https://example.com/mycustom-url/عربي.没有url编码,然后通过curl发送长编码?

假设您有以下PHP脚本(名为:test.php):

<?php
echo "GET:";
var_dump($_GET);

然后:

curl -G --data-urlencode "name=%E2%82%AC" http://localhost/test.php?name2=%E2%82%AC

会产生:

GET:array(2) {
["name2"]=>
string(3) "€"
["name"]=>
string(9) "%E2%82%AC"
}

  • 您看到name没有被urldecoded,name2被urldecoded。
  • 字符%E2%82%AC表示未编码的字符

结论:你仍然需要urlencode字符串…

我发现这个问题的解决方案是将阿拉伯字符串放在"并在url

中添加空格。

curl  https://example.com/mycustom-url/" عربي"

这样,bash将把字符串解释为url的一部分,并将字符串连接到url。它将隐式地以url编码发送,并且api将成功接收它。

最新更新