问题描述
我正在运行以下命令,但出现以下错误,提示文本为空。但它不是。我也试过 POST,它仍然会出现同样的错误。有什么想法吗?
curl.exe -k https://api.telegram.org/bot0000:xxxxx/sendMessage?chat_id=333333&text=yooo
{"ok":false,"error_code":400,"description":"错误请求:消息文本 为空"}'text' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
解决方法
你是如何让 Curl 在 Windows 中工作的?我的猜测是 Pearl Bash 黑客。好的,这是我过去发现的。当您在 Windows Powershell 中使用 Curl 时,它并不真正知道如何处理内容。 例子: 当您进行 API 调用时,例如“获取所有机器 ID”,您可能会得到一个包含 100 个值的列表。通常,您会为所需的名称执行类似“Grep”的操作,然后将“id”值传递给变量并使用它来影响目标。 我发现发生的是“文本”字符串没有作为字符串对象传递,而是作为某种机器类型对象传递。简而言之,您最终必须转换数据,然后您必须弄清楚如何搜索它。它变得非常快。
解决办法: 调用 WebRequest
虽然这个模块需要一点时间来习惯,但当你使用它时,你可以将值作为 Powershell Rich Objects 传递,并使用每个人都喜欢的 $variable.value 类型的 Powershell 语法。
#chat_id variable creation. This might need to be in the header,I don't know this API but wanted to show the example
$body = @{
chat_id = 333333
text = yooo
}
#Example. Actual code may vary.
$message = @{Invoke-RestMethod "https://api.telegram.org/ `
- Headers @{Authorization = "bot0000 xxxxx"} `
- Body $body `
- Method Get }
#now we can use $message to see what's available.
#we can then use $message.whatever to view the responses.