【问题标题】:Send Message using a WebRequest and Twilio使用 WebRequest 和 Twilio 发送消息
【发布时间】:2014-04-30 17:54:03
【问题描述】:

我需要使用 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();

【问题讨论】:

  • 微框架是否支持标准 cURL 请求?你可以用它代替 WebRequest 吗?

标签: c# webclient twilio netduino


【解决方案1】:

Twilio 布道者在这里。

从上面的代码来看,您似乎没有将 MessageApiString 变量中的 {AccountSid} 标记替换为您的实际帐户 Sid。

此外,您似乎正在将电话号码参数作为查询字符串值附加到 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();

希望对您有所帮助。

【讨论】: