DELETE using CURL with encoded URL

UrlCurlEncodingRequestHttp Delete

Url Problem Overview


I’m trying to make a request using CURL like this:

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

where OXYugGKg207g5uN/07V is a hash, so I suppose that I need to encode before do this request.

I have tried curl -X DELETE --data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V"

Some ideas?

Url Solutions


Solution 1 - Url

Since you are in a bash environment, you could encode the hash OXYugGKg207g5uN/07V before passing it to curl.

A straight-forward approach would be to use its byte representation %4f%58%59%75%67%47%4b%67%32%30%37%67%35%75%4e%2f%30%37%56

To get that, call:

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

It will give you: %4f%58%59%75%67%47%4b%67%32%30%37%67%35%75%4e%2f%30%37%56

The complete one-liner including curl in bash/zsh/sh/… would look like this:

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

and is equivalent to

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"

This solution is not very pretty, but it works.
I hope you find this helpful.

Solution 2 - Url

If really OXYugGKg207g5uN/07V is the hash then you need to encode that, not the whole url. You can use an encoding function available inside the environment you use cURL in.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncoffeeView Question on Stackoverflow
Solution 1 - UrlknugieView Answer on Stackoverflow
Solution 2 - UrlarkaschaView Answer on Stackoverflow