我想创建一个GET请求通过CUrl与变量作为批处理文件。到目前为止的问题是变量也可以包含空格,这不会让链接在CMD窗口中打开。
curl -G "http://192.168.0.100:1234/operations/get?token=abcde12345&subject=var1 in here&object=var2 in here"
我总是得到错误信息坏/非法格式或缺少链接。现在我已经用——data-urlencode解决了这个问题,但是包含的特殊字符也被编码为URL文本。
curl -G "http://192.168.0.100:1234/operations/get" --data-urlencode "token=abcde12345" --data-urlencode "subject=var1 in here" --data-urlencode "object=var2 has some spechial chars ö ß % &"
我的代码在这个网站https://reqbin.com/req/c-1n4ljxb9/curl-get-request-example上运行良好,用于测试和所有特殊字符正确到达,只有在CMD窗口中它将这些更改为url代码…
有没有办法用常规的"%20"但是保留特殊字符不变,或者有人在cmd窗口中对此进行替代?当我在浏览器中手动输入带有特殊字符的URL时,所有字符都正确到达,并且空格被自己替换。
在批处理文件中使用此答案(https://stackoverflow.com/a/29945186/724039):
echo off
set "str1=Hello World!"
set "str2=%%20"
for /f "delims=" %%a in ('cmd /v:on /c @echo "%%str1: =!str2!%%"') do set "str3=%%~a"
echo %str3%
当执行这个批处理脚本时,它将输出:Hello%20World!
可以应用到你的URL。
解决方案非常简单,代码如下:
set "str1=http://192.168.0.100:1234/operations/get?token=abcde12345&subject=var1 in here&object=var2 in here with ß ö"
set "str2=%%20"
for /f "delims=" %%a in ('cmd /v:on /c @echo "%%str1: =!str2!%%"') do set "str3=%%~a"
curl "%str3%"
不要使用-G,它只会再次破坏代码发生在我身上的事情....