如何使用Textlocal API发送短信?

时间:2016-07-16 13:30:28

标签: c# sendmessage

我正在尝试使用第三方API实现发送消息功能。 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"
}

即使我传递有效凭据。

如果您需要更多详细信息,请随时与我联系并告知我们。

提前感谢并感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

我相信您应该发送API密钥或用户名和密码。

从您的请求中删除用户名,只需保留API密钥,发件人,号码和邮件。一切都应该可行。

答案 1 :(得分:0)

API的文档说明您应该在标题中为POST请求传递参数值,或在 url 中传递参数值以获取GET请求。默认情况下,WebClient.UploadValue会执行POST,但您不会相应地设置标头。所以没有找到凭证。

您可以尝试使用WebClient.UploadValues(name, method, values)重载并指定GET作为方法。

NameValueCollection values = ...;
byte[] response = wb.UploadValues("https://api.txtlocal.com/send/", "GET", values);

答案 2 :(得分:0)

下面是对我有用的

    [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);
        }
    }

答案 3 :(得分:-1)

有点晚了……尝试用{“ apikey”,“”}}替换{“ hash”,“”}