CURL正常运行时,POST请求出错

问题描述 投票:1回答:1

我正在尝试使用cloudflare工作者(在下面粘贴)通过Twilio API发送SMS消息。 CURL请求(也粘贴在下面)使工作人员无法工作。

基于工作人员的400错误,消息正文未正确传递{"code": 21602, "message": "Message body is required.", "more_info": "https://www.twilio.com/docs/errors/21602", "status": 400}

但是代码对我来说很好。我们至少可以确认标题正确传递,因为与授权值混淆会更改错误。

我还查看了模板库中的POST请求示例,看不到失败的原因。https://developers.cloudflare.com/workers/templates/pages/post_json/

为了使POST请求正常工作,我需要更改我的工作程序代码中的什么?

注意:我知道我不应该将Twilio Auth令牌放在主体中,但是稍后我将旋转密钥。

async function handleRequest(request) {
  const init = {
    body: JSON.stringify(body),
    method: 'POST',
    headers: {
      'content-type': 'application/json',
      'Authorization': "Basic " + btoa('[account id]:[Authtoken]'),
    },
  }

  return await fetch(url, init)
}

addEventListener('fetch', event => {
  return event.respondWith(handleRequest(event.request))
})

const url = 'https://api.twilio.com/2010-04-01/Accounts/[Account id]/Messages.json'
const body = {
  Body:"Hello World",
  From:"+[some number]",
  To:"+[some number]]",
}
curl 'https://api.twilio.com/2010-04-01/Accounts/[Account id]/Messages.json' -X POST \
--data-urlencode 'To=+[some number]' \
--data-urlencode 'From=+[some number]' \
--data-urlencode 'Body=Hello World' \
-u [account id]:[auth token]
twilio cloudflare twilio-api cloudflare-workers twilio-javascript
1个回答
0
投票

因为Twilio需要application/x-www-form-urlencoded

REST API: Your Request

创建或更新资源涉及执行HTTP PUT或通过HTTP POST到资源URI。在PUT或POST中,您代表您希望以urlencoded形式更新的对象的属性键/值对。别担心,这已经是浏览器编码的方式默认情况下为POST。但是请确保将HTTP Content-Type标头设置为如果您的要求是“ application / x-www-form-urlencoded”编写自己的客户。

© www.soinside.com 2019 - 2024. All rights reserved.