ry8*_*806 3 c# rest json twilio
我正在尝试使用HTTP上的JSON与Twilio API进行通信(我在asp.net vNext上运行 - 他们的C#库还不支持coreclr)
我有以下代码,但每次调用API时都会得到相同的400 - 错误的请求响应:
{"code": 21603, "message": "A 'From' phone number is required.", "more_info": "https://www.twilio.com/docs/errors/21603", "status": 400}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码来设置请求并进行调用 - 身份验证成功,我收到上述错误:
var byteArray = Encoding.ASCII.GetBytes("{AccountSid}:{AuthToken}");
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var jsonStr = JsonConvert.SerializeObject(new {
From = WebUtility.UrlEncode("+15005550003"), // A test number twilio supply
To = WebUtility.UrlEncode("{my phone number}"),
Body = WebUtility.UrlEncode("Hi there from a pure json rest client...")
});
var response = await client.PostAsync("https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/SMS/Messages.json", new StringContent(jsonStr));
Run Code Online (Sandbox Code Playgroud)
在联系支持并与一位名叫约书亚的非常有帮助的人打交道后,我们已经弄明白了.
在Twilio文档中,您可以使用带有"messages.json"或"messages.xml"的URL - 我认为这意味着:无论您使用哪个URL,消息(请求和响应)都必须遵循该格式.
不幸的是,事实并非如此 - 所有对Twilio的请求都必须是Content-Type:application/x-www-form-urlencoded
例如To = 0123456789&From = 9876543210&Body = Hi
在C#(HttpClient)中看起来像:
_client.PostAsync(_url, new FormUrlEncodedContent(new Dictionary<string, string>(){
{ "To", "0123456789" },
{ "From", "9876543210" },
{ "Body", "Hi" } }));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1252 次 |
最近记录: |