如何在节点js中发送curl授权-u of curl?

时间:2017-07-27 05:11:05

标签: javascript node.js curl request twilio

我不知道如何在节点js中发送curl -u我尝试以下代码但没有运气。

request({
            url: "https://preview.twilio.com/HostedNumbers/HostedNumberOrders",
            method: "POST",
            json: true,
            headers: {
                "content-type": "application/json",
                "Authorization": accountSid + authToken
            },
            json: {
                "PhoneNumber": payload.phonenumber, "SmsCapability": true, "IsoCountry": payload.isocountry,
                "AddressSid": address.sid, "Email": payload.email,
                "FriendlyName": payload.friendlyname, "StatusCallbackUrl": "http://example.com/callback",
                "StatusCallbackMethod": "POST",
            },
        }, function (error, response, body) {
            res.json({ 'error': error, 'data': response, 'body': body });
            return true;
        })

这是我想要调用的卷曲。

curl -XPOST https://preview.twilio.com/HostedNumbers/HostedNumberOrders \ 
-d "PhoneNumber=+18312011484" \
-d "SmsCapability=true" \
-d "IsoCountry=US" \
-d "AddressSid=ADXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-d "Email=hostedsms@twilio.com" \
-d "FriendlyName=HostedNumberOrder1" \
-d "StatusCallbackUrl=http://example.com/callback" \
-d "StatusCallbackMethod=POST" \
-u 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:your_auth_token'

1 个答案:

答案 0 :(得分:2)

Twilio api

  

Twilio支持HTTP基本和摘要式身份验证。这允许您在Web服务器上密码保护您的TwiML URL,以便只有您和Twilio可以访问它们。

请参阅:docs

请求:http身份验证

  

支持摘要式身份验证,但它仅适用于sendImmediately设置为false;否则请求将在初始请求上发送基本身份验证,这可能会导致请求失败。

请参阅:docs

var options = {
  url: 'https://preview.twilio.com/HostedNumbers/HostedNumberOrders',
  auth: {
    user: username,
    password: password,
    sendImmediately: true
  }
}

request(options, function (err, res, body) {
  if (err) {
    console.dir(err)
    return
  }
  console.dir('headers', res.headers)
  console.dir('status code', res.statusCode)
  console.dir(body)
})
  

请注意,您还可以使用网址本身指定基本身份验证,详见RFC 1738。只需在主机前面传递用户:密码,并带有@符号:

var username = 'username',
    password = 'password',
    url = 'http://' + username + ':' + password + '@some.server.com';

request({url: url}, function (error, response, body) {
   // Do more stuff with 'body' here 
});