Clickatell:Integration API Key

时间:2016-11-22 08:02:40

标签: clickatell

using (var httpClient = new HttpClient())
{
    httpClient.BaseAddress = new Uri("https://platform.clickatell.com/");

    httpClient.DefaultRequestHeaders.Accept.Clear();
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "wyOtm7-eRq-dSHWORr6hfw==");

    var stringContent = new StringContent("{\"content\":\"Test Message\",\"to\":[\"61400000000\"]}");
    stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

    var httpResponseMessage = AsyncHelper.RunSync(() => httpClient.PostAsync("messages", stringContent));

    var result = httpResponseMessage.Content.ReadAsStringAsync().Result;
}

结果是: {“messages”:[],“error”:“Integration API密钥无效或缺失。 - ”}}

但我的API密钥与Clickatell完全一致。

其他信息: Clickatell站点显示以下Json curl调用(注意:我无法使curl工作以进行测试)。

CURL CALL:
==========
curl -i \
-X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: wyOtm7-eRq-dSHWORr6hfw==" \
-d '{"content": "Test Message Text", "to": ["61400000000"], "from": "+1234567890"}' \
-s https://platform.clickatell.com/messages

唯一的区别是我将我的令牌指定为不记名令牌。没有它我会得到格式异常。

感谢任何能够阐明我的问题的人。

3 个答案:

答案 0 :(得分:2)

手动FOR TEST API

您可以使用Google Chrome的Postman APP进行检查

步骤: -

  1. 安装POSTMAN(转到Google Chrome应用部分搜索邮递员)
  2. 创建一个API
  3. 选择方法作为POST
  4. 添加此网址 https://platform.clickatell.com/messages
  5. 转到标题部分和添加标题
  6. 添加密钥= 内容类型,值= application / json
  7. 添加键= 接受,值= application / json
  8. 添加密钥= 授权,值= 您的API密钥
  9. 转到正文部分
  10. 选择原始
  11. 在“

    ”中添加此内容

    {     "内容":"测试消息",     "到":[" + 919999999999"] }

  12. 点击发送

  13. 你会找到答案。

  14. 通过以上流程,您还可以手动测试API

答案 1 :(得分:0)

我想我已经解决了。看起来我需要使用无效的授权标头。

httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "z2zbgb4bRWeaImcjrhmWww==");

答案 2 :(得分:0)

要解决此问题,请按以下步骤操作:

  1. 登录您的clickatell帐户。
  2. 转到短信集成(左侧菜单)。
  3. 选择(单击)您的集成名称。
  4. 您将找到“续订”按钮,然后是“API密钥”。
  5. 点击续订按钮,它将续订您的API密钥。
  6. 现在保存或发布您的集成。
  7. 确保您的SMS集成应处于活动模式。 (您可以通过SMS集成(左侧菜单)状态选项卡更改状态)
  8. 创建一个实体(名称:OTPRequestEntity)

    public class OTPRequestEntity
    {
        [JsonProperty("content")]
        public string content { get; set; }
    
        [JsonProperty("to")]
        public List<string> to { get; set; }
    }
    

    转到您的代码并添加标题: -

    OTPResponseEntity entOTPResponseEntity = new OTPResponseEntity();
    List<string> numbers = new List<string>();
    numbers.Add("Your Mobile Number");
    string apiBaseAddress = "https://platform.clickatell.com";
    var objHttpClient = new HttpClient();
    objHttpClient.BaseAddress = new Uri(apiBaseAddress);
    objHttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    objHttpClient.DefaultRequestHeaders.Add(HttpRequestHeader.ContentType.ToString(), "application/json");
    objHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Your API Key");
    var vendRequest = new OTPRequestEntity
    {
        content = "Your Message.",
        to = numbers
    };
    HttpResponseMessage apioresponse = await objHttpClient.PostAsJsonAsync("/messages", vendRequest).ConfigureAwait(false);
    apioresponse.EnsureSuccessStatusCode();
    if (apioresponse.StatusCode == HttpStatusCode.Accepted)
    {
        string responseString = await apioresponse.Content.ReadAsStringAsync().ConfigureAwait(false);
        entOTPResponseEntity = JsonConvert.DeserializeObject<OTPResponseEntity>(responseString);
    }
    

    entOTPResponseEntity 对象中,您将获得 API响应