【发布时间】:2018-02-06 21:42:48
【问题描述】:
我正在构建一个 Web API 2 API 来响应 Twilio webhook。我已经建立了一个相当标准的端点,当我在那里发短信给我的号码时,我可以看到 Twilio 命中了它,但它得到了 12300 - Invalid Content-Type - Invalid Content-Type: application/json; charset=utf-8 提供。
我发现 Twilio 需要 XML 作为响应,但使用 */* 的接受标头,因此我的端点默认返回 JSON。
[Route("reply")]
[HttpPost]
public TwiMLResult TwilioSMS([FromBody]SmsRequest request)
{
var requestBody = request.Body;
var response = new MessagingResponse();
if (requestBody == "hello")
response.Message("Hi!");
else
response.Message("Invalid Input");
return new TwiMLResult(response);
}
我尝试改为返回 HttpResponseMessage(如下所示),因此我可以指定 XML,但我收到 12200 架构验证警告 - cvc-elt.1:无法从 Twilio 找到元素“TwiMLResult”的声明。
HttpResponseMessage resp = Request.CreateResponse<TwiMLResult>(
HttpStatusCode.OK, value: new TwiMLResult(response),
formatter: Configuration.Formatters.XmlFormatter);
如何强制此控制器/端点返回 XML,但不影响我的其他控制器/端点(仍应基于接受标头返回)?
【问题讨论】: