使用WebRequest和Twilio发送消息

时间:2014-04-30 17:54:04

标签: c# webclient twilio netduino

我需要使用Twilio服务和NetDuino发送消息。 我知道有一个API允许发送消息,但它使用Rest-Sharp后面的场景与微框架不兼容。我尝试做类似下面的事情,但我得到401错误(未经授权)。我得到了这段代码here(这正是我需要做的)

var MessageApiString = "https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/SMS/Messages.json";
var request = WebRequest.Create(MessageApiString + "?From=+442033*****3&To=+447*****732&Body=test");
var user = "AC4*************0ab05bf";
var pass = "0*************b";
request.Method = "POST";
request.Credentials = new NetworkCredential(user, pass);
var result = request.GetResponse();

1 个答案:

答案 0 :(得分:5)

Twilio传道者在这里。

从上面的代码看,你看起来并不是用你的实际账户Sid替换MessageApiString变量中的{AccountSid}令牌。

此外,您似乎将电话号码参数作为查询字符串值附加到URL。因为这是一个POST请求,我认为你需要将它们包含在请求体中,而不是在查询字符串中,这意味着你还需要设置ContentType属性。

以下是一个例子:

var accountSid = "AC4*************0ab05bf";
var authToken = "0*************b";

var MessageApiString = string.Format("https://api.twilio.com/2010-04-01/Accounts/{0}/SMS/Messages.json", accountSid);

var request = WebRequest.Create(MessageApiString);
request.Method = "POST";
request.Credentials = new NetworkCredential(accountSid, authToken);
request.ContentType = "application/x-www-form-urlencoded";

var body = "From=+442033*****3&To=+447*****732&Body=test";
var data = System.Text.ASCIIEncoding.Default.GetBytes(body);

using (Stream s = request.GetRequestStream())
{
    s.Write(data, 0, data.Length);
}

var result = request.GetResponse();

希望有所帮助。