curl - 如何向 HTCPCP 服务器发送 BREW 请求,要求提供一杯加奶油和一杯香草的咖啡
问题描述
我正在尝试向实现超文本咖啡壶控制协议(HTCPCP/1.0,在 RFC 2324 中定义)的服务器发送 BREW 请求,该协议是使用 cURL 构建在 HTTP 之上的协议。
我想用奶油和香草糖浆冲泡咖啡,但到目前为止,我的所有请求都被服务器拒绝了。
令人困惑的是,RFC 说 Content-Type 必须设置为“application/coffee-pot-command”(第 2.11 节),但也说 Content-Type 必须设置为“message/coffeepot”(第 4 节,另外还说"message/coffeepot" 的内容必须包含一个咖啡信息正文,定义为咖啡信息正文 = "start" | "stop")。我已经使用了“application/coffee-pot-command”,纯粹是把它放在第一位(但我都试过了)。
接下来,我添加了一个“Accept-Additions”标题,将牛奶类型指定为“Cream”,将糖浆类型指定为“Vanilla”。RFC 概述了此标头的 BNF:
Accept-Additions = "Accept-Additions" ":"
#( addition-range [ accept-params ] )
addition-type = ( "*"
| milk-type
| syrup-type
) *( ";" parameter )
milk-type = ( "Cream" | "Half-and-half" | "Whole-milk"
| "Part-Skim" | "Skim" | "Non-Dairy" )
syrup-type = ( "Vanilla" | "Almond" | "Raspberry"
| "Chocolate" )
我对这部分的最佳猜测是我需要添加以下标题:
--header "Accept-Additions: Skim;1,Vanilla;1"
虽然我没有解释 BNF 的经验,所以这可能是完全错误的。
所有这些都导致我使用 cURL 构建以下请求:
curl -X POST https://theserver.com --header "Content-Type:application/coffee-pot-command" --header "Accept-Additions:Skim;1,Vanilla;1"
但是服务器一直告诉我“无效的饮料,不能冲泡”。我哪里错了?
有一个名为“咖啡”URI 方案的部分包含更多 BNF:
coffee-url = coffee-scheme ":" [ "//" host ]
["/" pot-designator ] ["?" additions-list ]
coffee-scheme = ( "koffie" ; Afrikaans, Dutch
| "coffee" ; English
)
但我不知道如何解释这一点。我需要在某处添加“coffee:/pot-0”吗?如果是这样,如何在 cURL 中做到这一点?这是我想念的吗?我知道 RFC 是愚人节,但服务器是真实的。给能帮忙的人一杯免费咖啡。
解决方案
推荐阅读
- r - 使用 tidyr 转换为在变量中生成子变量的长表
- javascript - 使用 Websockets 在 Python 中连续流式输出程序
- c# - 根据字符串参数从实体框架返回一个列表
- c# - 我有一个 asp 文本框,表示为 ASP 文字的文本属性。如何获取 TextBox 的 Text 值?
- java - 是否可以在 AspectJ 中排除字段集
- java - 排序 ArrayList 的麻烦
- javascript - 在潜水中打印段落时出现jquery问题
- swift - 使用 SwiftUI TextEditor 撤消/重做文本输入
- scala - Spark 任务无法将行写入 ORC 表
- javascript - 如何从 API json 文件中获取数组对象