56

我正在尝试使用 CURL 发出请求,如下所示:

curl -X DELETE "https://myhost/context/path/users/OXYugGKg207g5uN/07V" 

哈希在哪里OXYugGKg207g5uN/07V,所以我想我需要在执行此请求之前进行编码。

我试过了curl -X DELETE --data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V"

一些想法?

4

2 回答 2

22

由于您处于 bash 环境中,因此您可以在将散列OXYugGKg207g5uN/07V传递给 curl 之前对其进行编码。

一种直接的方法是使用它的字节表示%4f%58%59%75%67%47%4b%67%32%30%37%67%35%75%4e%2f%30%37%56

为此,请致电:

echo -ne "OXYugGKg207g5uN/07V" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g'

它会给你:%4f%58%59%75%67%47%4b%67%32%30%37%67%35%75%4e%2f%30%37%56

包含 bash/zsh/sh/... 中的 curl 的完整单行代码如下所示:

curl -X DELETE "https://myhost/context/path/users/$(echo -ne "OXYugGKg207g5uN/07V" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g')"

并且等价于

curl -X DELETE "https://myhost/context/path/users/%4f%58%59%75%67%47%4b%67%32%30%37%67%35%75%4e%2f%30%37%56"

这个解决方案不是很漂亮,但它有效。
我希望你觉得这有帮助。

于 2014-08-08T09:35:40.820 回答
12

如果确实OXYugGKg207g5uN/07V是哈希,那么您需要对其进行编码,而不是整个 url。您可以在使用 cURL 的环境中使用可用的编码函数。

于 2012-10-04T20:37:18.970 回答