【问题标题】:DELETE using CURL with encoded URL使用带有编码 URL 的 CURL 删除
【发布时间】:2012-09-25 23:20:03
【问题描述】:

我正在尝试像这样使用 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"

一些想法?

【问题讨论】:

  • 服务器是否接收到请求?看起来您正在对整个 URL 进行 URL 编码......这将创建一个不可用的 URL。
  • 你真的试过--data-urlenconded吗?正确拼写可能会对您有所帮助。

标签: url curl encoding request http-delete


【解决方案1】:

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

【讨论】:

  • 我正在使用 bash 脚本。你有例子吗?
【解决方案2】:

由于您处于 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"

这个解决方案不是很漂亮,但很有效。
希望对您有所帮助。

【讨论】:

  • 嗯,不知道我的理解是否正确,你得到什么样的错误? sed 's/\(..\)/%\1/g')$() 评估内,因此需要转义括号。如果不转义它们,sed 将在 sh、bash 和 zsh 中抛出此错误:\1 not defined in the RE.
  • 评论已删除。我只使用了我需要的部分命令,错过了部分上下文。无视。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多