我正在尝试使用第三方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"
}
即使我传递有效凭据。
如果您需要更多详细信息,请随时与我联系并告知我们。
提前感谢并感谢您的帮助。
答案 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”,“”}