如何使用文本本地 API 发送短信
本文关键字:API 何使用 文本 | 更新日期: 2023-09-27 17:57:17
我正在尝试使用第三方 API 实现发送消息功能。原料药 https://api.txtlocal.com/send/
但是,当我们测试实现时,我们遇到了错误代码 3 的问题,并给出了一条消息作为"无效的用户详细信息"。
C# 代码:
string UserId = "1234";
String message = HttpUtility.UrlEncode("OTP");
using (var wb = new WebClient())
{
byte[] response = wb.UploadValues("https://api.txtlocal.com/send/", new NameValueCollection()
{
{"username" , "<TextLocal UserName>"},
{"hash" , "<API has key>"},
{"sender" , "<Unique sender ID>"},
{"numbers" , "<receiver number>"},
{"message" , "Text message"}
});
string result = System.Text.Encoding.UTF8.GetString(response);
//return result;
错误详细信息:
{
"errors": [{
"code": 3,
"message": "Invalid login details"
}],
"status": "failure"
}
即使我传递了有效的凭据。
请协助我,如果您需要更多详细信息,请告诉我。
提前感谢您的帮助。
API 的文档指出,您应该在 POST 请求的标头或 GET 请求的 URL 中传递参数值。 WebClient.UploadValue
默认执行 POST,但您没有相应地设置标头。因此找不到凭据。
您可以尝试使用 WebClient.UploadValues(name, method, values)
重载并将 GET 指定为方法。
NameValueCollection values = ...;
byte[] response = wb.UploadValues("https://api.txtlocal.com/send/", "GET", values);
我相信
您应该发送API密钥或用户名和密码。
从您的请求中删除用户名,只留下 API 密钥、发件人、数字和消息。那么一切都应该可以正常工作。
这是对我有用的:
[HttpGet]
public async Task<JObject> SendOtp(string number)
{
using (var client = _httpClientFactory.CreateClient())
{
client.BaseAddress = new Uri("https://api.textlocal.in/");
client.DefaultRequestHeaders.Add("accept","application/json");
var query = HttpUtility.ParseQueryString(string.Empty);
query["apikey"] = ".....";
query["numbers"] = ".....";
query["message"] = ".....";
var response = await client.GetAsync("send?"+query);
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();
return JObject.Parse(content);
}
}
有点晚了......尝试将 {"hash" , "} 替换为 {"apikey" , "}