我正在使用 Twilio API,它提供了 PHP 和 Ruby 示例。我在一个网站上工作,通过在 ASP.NET MVC 3 中编码的 API 发送文本消息,并利用我对 WebRequest 对象的有限知识,我能够翻译这个:
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/AC4840da0d7************f98b20b084/SMS/Messages.xml' \
-d 'From=%2B14155992671' \
-u AC4840da0d7************f98b20b084:f7fc2**************75342
进入这个:
var request =
WebRequest.Create(MessageApiString + "?From=+14*********1&To=" + Phone + "&Body=" + smsCampaign.Message);
var user = "AC4840da0d7************f98b20b084";
var pass = "f7fc2**************75342";
string credentials = String.Format("{0}:{1}", user, pass);
request.Headers.Add("Authorization", credentials);
var result = request.GetResponse();
但这不是身份验证,我从他们的 API 收到 401。与 cURL -u
命令等效的 C# 是什么?
更新
var request =
WebRequest.Create(MessageApiString + "?From=+14155992671&To=" + Phone + "&Body=" + smsCampaign.Message);
var cc = new CredentialCache();
cc.Add(new Uri(MessageApiString), "NTLM", new NetworkCredential("AC4840da0d7************f98b20b084", "f7fc2**************75342"));
request.Credentials = cc;
request.Method = "POST";
var result = request.GetResponse();
仍然收到 401。有什么想法吗?
更新 2
好吧,多亏了下面的回答,我才能够访问 api,但现在我收到了 400 Bad Request。有没有一种更简洁的方法来构建查询字符串来传递这些数据?这三个字段是 From
、To
和 Body
。
最佳答案
尝试包括
request.Method = "POST";
和
request.Credentials = new NetworkCredential("username", "password");
关于c# - ASP.NET 等效于此 cURL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507612/