如何使用文本本地 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 发送短信

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" , "}