2016-11-22 42 views
1
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; 
} 

结果是: { “消息”:[], “错误”: “无效或缺少集成的API密钥 - ”}的Clickate:无效或缺少集成的API密钥

但是我的API密钥完全按照Clickatell的定义。

附加信息: Clickatell网站显示以下Json卷曲调用(注意:为了测试,我无法使用卷曲工作)。

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 

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

谢谢任何​​人谁可能会对我的问题有所了解。

+0

另一个有趣的事情是... API接受Accepted(202)响应,尽管它已经明确地解决了我的API密钥问题。 – kraeg

回答

0

我想我已经完成了。它看起来像我需要使用一个无效的授权标题。

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

为了解决这个问题,请按照下列步骤操作:

  1. 登录到您的Clickate帐户。
  2. 转到SMS集成(左侧菜单)。
  3. 选择(点击)您的集成名称。
  4. 您会在API Key后面找到更新按钮。
  5. 点击更新按钮,它会更新您的API密钥。
  6. 现在保存或发布您的集成。
  7. 确保您的SMS集成应处于活动模式。 (你可以改变从SMS整合状态(左侧菜单)状态选项卡)

创建一个实体(名称: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); 
} 

in entOTPResponseEntity您将得到的对象API响应

2

测试API手动

您可以使用谷歌浏览器

步骤的邮差APP检查: -

  1. 安装邮差(转到谷歌的邮递员Chrome应用部分搜索)
  2. 创建一个API
  3. 选择方法为POST
  4. 添加此URL https://platform.clickatell.com/messages
  5. 进入页眉部分并添加页眉
  6. 添加关键= Content-Type的,值= 应用/ JSON
  7. 添加项= 接受,值= 应用程序/ json
  8. 添加密钥= 授权,值= 您的API密钥
  9. 进入主体部分
  10. 选择为原料
  11. 中含量的不同

    { “内容” 补充一点: “测试消息”, “到”: “919999999999”] }

  12. 点击发送

  13. 你会发现这种反应。

通过以下上述方法可以还测试您API手动